使用相同的ID从多个列表中创建多个行

时间:2018-08-17 11:37:34

标签: python pandas dataframe

我有一个这样的示例数据框,列:IDMain

ID,Main
0,[30 115 266 38;662 99 1199 43] [511 133 25 47] [664 162 49 22]

如何使用熊猫使我的数据框类似以下内容

预期产量

ID,Main
0,30 115 266 38
0,662 99 1199 43
0,511 133 25 47
0,664 162 49 22

1 个答案:

答案 0 :(得分:4)

首先对;的{​​{1}}进行][的{​​{3}} [],然后在replaceSeries之间提取值。

最后创建list,由findall重塑,并由stack进行一些数据清理:

DataFrame

s = df['Main'].fillna('').str.replace(';','][').str.findall('\[(.*?)\]') df = (pd.DataFrame(s.values.tolist(), index=s.index) .stack() .reset_index(level=1, drop=True) .reset_index()) df.columns = ['ID','Main'] print (df) ID Main 0 0 30 115 266 38 1 0 662 99 1199 43 2 0 511 133 25 47 3 0 664 162 49 22 的另一种解决方案:

Series