Pandas爆炸函数的使用技巧
在Pandas中,我们会经常遇到需要把一列包含着多个元素的数据进行拆分的情况,比如一张表格中存放了多个tags,而你需要将这些tags拆分为单独的行进行处理,这时候我们就需要用到Pandas爆炸函数——explode()。
explode()函数的使用方法
explode()
函数主要用于拆分Series或DataFrame中的每一个元素,可以让每一个元素变为其所在行的一条新记录,从而让数据变得更加容易处理。下面我们来看一下explode()
函数的用法:
df.explode(column)
其中,df
表示要操作的DataFrame,column
表示要拆分的列名。
示例一:拆分tags列
比如我们有一个数据集,其中有一个名为tags
的列,包含了多个tag,我们希望将每一个tag在表格中展开为单独的行。代码实现如下:
import pandas as pd
df = pd.DataFrame({
'name': ['Mike', 'Bob', 'Jack'],
'tags': [['apple', 'banana'], ['orange'], ['pear', 'grape']]
})
print(df)
输出:
name tags
0 Mike [apple, banana]
1 Bob [orange]
2 Jack [pear, grape]
我们可以通过如下代码将tags
列进行拆分:
df = df.explode('tags')
print(df)
输出:
name tags
0 Mike apple
0 Mike banana
1 Bob orange
2 Jack pear
2 Jack grape
拆分后,tags
列中的每一个元素都展开成了表格中的一行。
示例二:拆分嵌套的字典
有时候,我们的数据中包含着一些嵌套的复杂数据类型,比如字典等等,需要进行拆分。下面我们就以嵌套的字典为例,说明如何使用explode()
函数进行拆分。
df = pd.DataFrame({
'name': ['Mike', 'Bob', 'Jack'],
'tags': [
{'fruit': ['apple', 'banana'], 'color': 'red'},
{'fruit': ['orange'], 'color': 'orange'},
{'fruit': ['pear', 'grape'], 'color': 'green'},
]
})
print(df)
输出:
name tags
0 Mike {'fruit': ['apple', 'banana'], 'color': 'red'}
1 Bob {'fruit': ['orange'], 'color': 'orange'}
2 Jack {'fruit': ['pear', 'grape'], 'color': 'green'}
我们希望将tags
字典中的fruit
元素拆分成多行,展开字典中的每一个元素成为表格中的一行。代码如下:
df = df.explode('tags')
df = pd.concat([df.drop(['tags'], axis=1), df['tags'].apply(pd.Series)], axis=1)
print(df)
输出:
name color fruit
0 Mike red apple
0 Mike red banana
1 Bob orange orange
2 Jack green pear
2 Jack green grape
可以看到,我们成功地将tags
列中的fruit
元素拆分成了多行,同时也展开了整个字典中的元素。