pandas dataframe 中的explode函数用法详解

  • Post category:Python

Pandas DataFrame中的explode函数用法详解

什么是explode函数

explode函数是Pandas DataFrame中的函数,它可以将一个含有列表、序列或Array的列切分成多行,每一行包含一个元素。该方法返回一个新的DataFrame对象。

Pandas 0.25.0 及以后的版本才开始支持该函数,因此需要确保Pandas的版本高于该版本。

简单用法

示例1:

首先,我们创建一个DataFrame对象,该对象具有两个列:keyvalues,其中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对象,包含两列 s1s2

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的列切分成多行,每一行都包含一个元素。 它不仅仅适用于示例中所提到的场景,而且还可以应用到许多其他场景。