我怎样才能解开"包含多个项目的列?

时间:2015-12-03 12:18:31

标签: python pandas dataframe

我有一个DataFrame,其中一列是set的字符串表示形式。有可能"展开"任何像这样的行?

一个例子:

     ColA                 ColB                    ColC   ColD
0    "one item in a set"  "{'item 1'}"            "..."  "..."
1    "several in a set"   "{'item 1', 'item 2'}"  "..."  "..."
...

应该成为:

     ColA                 ColB       ColC   ColD 
0    "one item in a set"  'item 1'   "..."  "..."
1    "several in a set"   'item 1'   "..."  "..." 
2    "several in a set"   'item 2'   "..."  "..."
... 

1 个答案:

答案 0 :(得分:1)

你可以:

df2 = df.colB.str[1:-1].str.split(',', expand=True)
df2 = df2.stack().reset_index()
df2 = df2.drop('level_1', axis=1).rename(columns={0: 'colB'}).set_index('level_0')
df = df.drop('colB', axis=1)
df = pd.concat([df, df2], axis=1)

{}.split() ',' expand移至新列和.stack()后,然后清理。