pandas将含有多值的内容分拆成多行

在数据处理过程中,经常会遇到以下类型的数据:


pandas将含有多值的内容分拆成多行_第1张图片
image.png

在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行。

在上图中,列名为”Country” ,index为4和5的单元格内,值为”UK/Australia”和”UK/Netherland”。

解决办法

import pandas as pd

df = pd.DataFrame({'Country':['China','US','Japan','EU','UK/Australia', 'UK/Netherland'],
               'Number':[100, 150, 120, 90, 30, 2],
               'Value': [1, 2, 3, 4, 5, 6],
               'label': list('abcdef')})
df

Out[2]:
         Country  Number  Value label
0          China     100      1     a
1             US     150      2     b
2          Japan     120      3     c
3             EU      90      4     d
4   UK/Australia      30      5     e
5  UK/Netherland       2      6     f

分为如下几步:

  • 将含有多值的列进行拆分,然后通过stack()方法进行变换,并通过index的设置来
    完成
  • 用drop()方法从DataFrame中删除含有多值的列
  • 然后用join()方法来合并
df.drop('Country', axis=1).join(df['Country'].str.split('/',
expand=True).stack().reset_index(level=1, drop=True).rename('Country'))
Out[3]:
   Number  Value label     Country
0     100      1     a       China
1     150      2     b          US
2     120      3     c       Japan
3      90      4     d          EU
4      30      5     e          UK
4      30      5     e   Australia
5       2      6     f          UK
5       2      6     f  Netherland

你可能感兴趣的:(pandas将含有多值的内容分拆成多行)