从另一个df中每行的分隔值创建一个df

时间:2018-03-29 16:17:44

标签: python pandas numpy

我正在寻找从给定数据帧中的每一行创建一个新的pandas数据帧。 行中的值是逗号分隔的字符串。

e.g。输入

COLUMN_1               COLUMN_2                      COLUMN_3
"Marvel"               "Hulk, Thor, Ironman"         "1,7,8"
"DC"                   "Spiderman, Batman, Flash"    "18, 74, 88"

期望输出

COLUMN_1     COLUMN_2
Hulk                1
Thor                7
Ironman             8


COLUMN_1     COLUMN_2
Spiderman          18
Batman             74
Flash              88

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将groupbystr.split一起使用并创建您想要的目标

for x , y in df.groupby('COLUMN_1'):
    s=pd.DataFrame({'COLUMN_1':y.COLUMN_2.str.split(', ').iloc[0],'COLUMN_2':y.COLUMN_3.str.split(',').iloc[0]})
    print(s)
    COLUMN_1 COLUMN_2
0  Spiderman       18
1     Batman       74
2      Flash       88
  COLUMN_1 COLUMN_2
0     Hulk        1
1     Thor        7
2  Ironman        8

我们也可以将数据存储到dict中

d={x:pd.DataFrame({'COLUMN_1': y.COLUMN_2.str.split(', ').iloc[0], 'COLUMN_2': y.COLUMN_3.str.split(',').iloc[0]})  for x, y in df.groupby('COLUMN_1')}
d
Out[412]: 
{'DC':     COLUMN_1 COLUMN_2
 0  Spiderman       18
 1     Batman       74
 2      Flash       88, 'Marvel':   COLUMN_1 COLUMN_2
 0     Hulk        1
 1     Thor        7
 2  Ironman        8}