我有一个Pandas DataFrame,其中一列看起来像这样:
0 {u'funny': 2, u'useful': 0, u'cool': 0}
1 {u'funny': 370, u'useful': 487, u'cool': 296}
2 {u'funny': 2, u'useful': 17, u'cool': 1}
3 {u'funny': 1233, u'useful': 2452, u'cool': 1875}
4 {u'funny': 4, u'useful': 7, u'cool': 2}
5 {u'funny': 408, u'useful': 819, u'cool': 557}
6 {u'funny': 321, u'useful': 673, u'cool': 430}
7 NaN
8 {u'funny': 0, u'useful': 8, u'cool': 0}
我想将这一列分成不同的列,而不是明确地迭代所有行(有很多,加上它是不好的做法)。
DataFrame.ThisColumn[1]["funny"]
返回2,但DataFrame.ThisColumn[:]["funny"]
不起作用....
如何将其分成不同的列?
感谢。
答案 0 :(得分:6)
您可以将Series构造函数应用于该列:
In [11]: df
Out[11]:
dics
0 {u'funny': 2, u'useful': 0, u'cool': 0}
1 {u'funny': 370, u'useful': 487, u'cool': 296}
2 {u'funny': 2, u'useful': 17, u'cool': 1}
3 {u'funny': 1233, u'useful': 2452, u'cool': 1875}
4 {u'funny': 4, u'useful': 7, u'cool': 2}
5 {u'funny': 408, u'useful': 819, u'cool': 557}
6 {u'funny': 321, u'useful': 673, u'cool': 430}
7 {u'funny': 0, u'useful': 8, u'cool': 0}
In [12]: df['dics'].apply(pd.Series)
Out[12]:
cool funny useful
0 0 2 0
1 296 370 487
2 1 2 17
3 1875 1233 2452
4 2 4 7
5 557 408 819
6 430 321 673
7 0 0 8
然而,我认为在构建DataFrame时分割它们几乎肯定是最好的,而不是一旦它们已经在DataFrame中。