【发布时间】:2016-12-20 14:34:37
【问题描述】:
我有以下熊猫数据框:
在:
df
出来:
A B C D
0 0938320 usa amazon orange: $ 8.00| pineapple: $2.00
1 0938320 usa alibaba orange: $ 8.00| apple: $2.00
2 0938320 usa ebay mint: $ 8.00| watermelon: $2.00| mint: $2.00
...
n 0938320 usa amazon pear: $ 8.00| bannana: $2.00
我想按|拆分,并堆成(*):
A B C D
0 0938320 usa amazon orange: $ 8.00
1 0938320 usa amazon pineapple: $2.00
2 0938320 usa alibaba orange: $ 8.00
3 0938320 usa alibaba apple: $2.00
4 0938320 usa bay mint: $ 8.00
5 0938320 usa ebay watermelon: $2.00
6 0938320 usa ebay mint: $2.00
7 0938320 usa amazon pear: $ 8.00
...
8 0938320 usa amazon bannana: $2.00
所以,我尝试了以下方法:
在:
s = df2.D.str.split("|").apply(pd.Series, 1).stack()
s.index = s.index.droplevel(-1)
del df2['D']
df.join(s)
出来:
ValueError: Other Series must have a name
还有:
b = pd.DataFrame(df2.D.str.split('|').tolist(), index=df2['A','B','C']).stack()
b = b.reset_index()[[0, 'D']]
b.columns = ['A','B','C']
b
但是,不起作用。如何修改最后一种方法以获得 (*)?我想我的主要问题是我不知道如何获取index=df2['A','B','C']).stack() 中的所有列。
【问题讨论】:
标签: python python-3.x pandas dataframe