pandas.DataFrame中的explode函数用法详解
什么是explode函数
explode
函数是 pandas.DataFrame
类的一个方法,它可以将一个包含 list 或者其他可迭代对象的列(column)拆分成多行,然后在所有其他列(non-explode)上进行复制。
函数原型
explode
函数的原型如下:
DataFrame.explode(
column,
ignore_index=False
) -> Union['DataFrame', 'Series']
参数说明:
column
:指定要拆分的列名;ignore_index
:如果为True
,则重置索引。
示例说明
为了更好地理解 explode
函数,下面给出两个具体的示例。
示例一
假设有一个简单的 DataFrame:
import pandas as pd
df = pd.DataFrame({
'col1': ['a', 'b', 'c', 'd'],
'col2': [[1, 2], [3, 4, 5], [6], [], [7, 8]]
})
其中,col2
是一个包含 list 的列。
运行以下代码可以看到该 DataFrame:
print(df)
输出结果如下:
col1 col2
0 a [1, 2]
1 b [3, 4, 5]
2 c [6]
3 d []
4 e [7, 8]
可以发现,col2
列中包含了不同长度的 list。
现在,我们可以使用 explode
函数来拆解 col2
列。示例代码如下:
new_df = df.explode('col2')
print(new_df)
输出结果如下:
col1 col2
0 a 1
0 a 2
1 b 3
1 b 4
1 b 5
2 c 6
3 d None
4 e 7
4 e 8
可以看出,原本 col2
列中的每个元素都变成了单独的一行,并在其他所有列上进行了复制。注意到最初的第 4 行中,col2
列为空 list,因此拆解后的结果中 col1
列同样是空的。
示例二
再看一个稍微复杂一些的示例。假设有如下的 DataFrame:
df = pd.DataFrame({
'col1': ['a', 'b', 'c', 'd', 'e'],
'col2': [[1, 2], [3, 4, 5], [6], [], [7, 8]],
'col3': [[2, 3], [4, 5, 6], [], [1], [9, 10]]
})
该 DataFrame 中有两个包含 list 的列:col2
和 col3
。
运行以下代码可以看到该 DataFrame:
print(df)
输出结果如下:
col1 col2 col3
0 a [1, 2] [2, 3]
1 b [3, 4, 5] [4, 5, 6]
2 c [6] []
3 d [] [1]
4 e [7, 8] [9, 10]
现在,我们可以使用 explode
函数来拆解 col2
和 col3
列。示例代码如下:
new_df = df.explode('col2').explode('col3')
print(new_df)
输出结果如下:
col1 col2 col3
0 a 1 2
0 a 1 3
0 a 2 2
0 a 2 3
1 b 3 4
1 b 3 5
1 b 3 6
1 b 4 4
1 b 4 5
1 b 4 6
1 b 5 4
1 b 5 5
1 b 5 6
2 c 6
3 d
4 e 7 9
4 e 7 10
4 e 8 9
4 e 8 10
可以看出,col2
列和 col3
列都被拆解了,并且生成了所有可能的组合,并在其他所有列上进行了复制。注意到原本第 3 行 col3
列是空的,因此在拆解后的结果中也是空的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas dataframe 中的explode函数用法详解 - Python技术站