Pandas DataFrame中的explode函数用法详解
什么是explode函数
explode
函数是Pandas DataFrame中的函数,它可以将一个含有列表、序列或Array的列切分成多行,每一行包含一个元素。该方法返回一个新的DataFrame对象。
Pandas 0.25.0 及以后的版本才开始支持该函数,因此需要确保Pandas的版本高于该版本。
简单用法
示例1:
首先,我们创建一个DataFrame对象,该对象具有两个列:key
和values
,其中values
列中包含了嵌套的列表:
import pandas as pd
import numpy as np
df = pd.DataFrame({'key': ['A', 'B', 'C'], 'values': [[1, 2], [3, 4, 5], [6]]})
print(df)
输出结果如下:
key values
0 A [1, 2]
1 B [3, 4, 5]
2 C [6]
接下来,我们在values
列上调用explode()
函数:
df_exploded = df.explode('values')
print(df_exploded)
输出结果如下:
key values
0 A 1
0 A 2
1 B 3
1 B 4
1 B 5
2 C 6
使用explode()
函数,将values
列的嵌套列表按元素拆分成了多行,并复制了 key
列对应的值。
示例2:
同样,我们创建了一个新的DataFrame对象,包含两列 s1
和 s2
:
df = pd.DataFrame({'s1': ['a', 'b', 'c'], 's2': ['d,e', 'f,g,h', 'i,j,k,l']})
print(df)
输出结果如下:
s1 s2
0 a d,e
1 b f,g,h
2 c i,j,k,l
然后,我们在s2
列上调用str.split
方法以及explode()
函数:
df['s2'] = df['s2'].str.split(',')
df_exploded = df.explode('s2')
print(df_exploded)
输出结果如下:
s1 s2
0 a d
0 a e
1 b f
1 b g
1 b h
2 c i
2 c j
2 c k
2 c l
参数
explode()
函数有一个必需参数 column
,用于指定待切分的列。
注意事项
需要注意的是,若待切分的列中某一行为空,则将会在结果中产生一行NaN值。
结语
explode()
函数是一个十分实用的函数,可以方便地将一个含有列表、序列或Array的列切分成多行,每一行都包含一个元素。 它不仅仅适用于示例中所提到的场景,而且还可以应用到许多其他场景。