Pandas爆炸函数的使用技巧

  • Post category:Python

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元素拆分成了多行,同时也展开了整个字典中的元素。