我想转换一个如下所示的DataFrame:
dictionary
0 {'b': 2, 'a': 1}
1 {'c': 4, 'b': 3}
这
import pandas
df = pandas.DataFrame()
df['dictionary'] = [{'a':1,'b':2},{'b': 3,'c':4}]
到这样的DataFrame上:
dictionary a b c
0 {'b': 2, 'a': 1} 1.0 2 NaN
1 {'c': 4, 'b': 3} NaN 3 4.0
其中(当然)列的顺序无关紧要。
如果不显式循环字典或行,我怎么能这样做呢?
答案 0 :(得分:4)
一种矢量化方法,将给定系列转换为list
表示,然后逐列执行连接:
pd.concat([df['dictionary'], pd.DataFrame(df['dictionary'].values.tolist())], axis=1)
答案 1 :(得分:3)
您可以应用pd.Series转换并连接两者:
pd.concat([df, df['dictionary'].apply(pd.Series)], axis=1)
Out:
dictionary a b c
0 {'b': 2, 'a': 1} 1.0 2.0 NaN
1 {'b': 3, 'c': 4} NaN 3.0 4.0
或者您可以使用join
In [4]: df.join(df.dictionary.apply(pd.Series))
Out[4]:
dictionary a b c
0 {u'a': 1, u'b': 2} 1.0 2.0 NaN
1 {u'c': 4, u'b': 3} NaN 3.0 4.0