首页 / PYTHON / python-熊猫字典键到列
python-熊猫字典键到列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-熊猫字典键到列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2126字,纯文字阅读大概需要4分钟。
内容图文
![python-熊猫字典键到列](/upload/InfoBanner/zyjiaocheng/686/44b38c19fc504934a6832fc2f65dd16b.jpg)
这个问题已经在这里有了答案: > Splitting dictionary/list inside a Pandas Column into Separate Columns 7个
我有一个这样的数据框.
index column1
e1 {u'c680': 5, u'c681': 1, u'c682': 2, u'c57...
e2 {u'c680': 6, u'c681': 2, u'c682': 1, u'c57...
e3 {u'c680': 2, u'c681': 4, u'c682': 2, u'c57...
e4 {u'c680': 4, u'c681': 2, u'c682': 3, u'c57...
e5 {u'c680': 3, u'c681': 5, u'c683': 3, u'c57...
现在,我想将column1中的dict扩展到如下所示的各个列.
index c680 c681 c682 c683
e1 5 1 2 0
e2 6 2 1 0
e3 2 4 2 0
e4 4 2 3 0
e5 3 5 0 3
有没有熊猫捷径可以做到这一点?
解决方法:
这里最好的方法是不使用apply(pd.Series),因为它非常慢,但是将NaNs转换为0然后转换为ints的DataFrame构造函数:
df = pd.DataFrame({'column1': [{'c681': 1, 'c682': 2, 'c57': 4, 'c680': 5},
{'c681': 2, 'c682': 1, 'c57': 7, 'c680': 6},
{'c681': 4, 'c682': 2, 'c57': 8, 'c680': 2},
{'c681': 2, 'c682': 3, 'c57': 1, 'c680': 4},
{'c683': 3, 'c681': 5, 'c57': 0, 'c680': 3}]},
index=['e1','e2','e3','e4','e5'])
print (df)
column1
e1 {'c680': 5, 'c682': 2, 'c57': 4, 'c681': 1}
e2 {'c680': 6, 'c682': 1, 'c57': 7, 'c681': 2}
e3 {'c680': 2, 'c682': 2, 'c57': 8, 'c681': 4}
e4 {'c680': 4, 'c682': 3, 'c57': 1, 'c681': 2}
e5 {'c683': 3, 'c680': 3, 'c57': 0, 'c681': 5}
df = pd.DataFrame(df['column1'].values.tolist(), index=df.index).fillna(0).astype(int)
print (df)
c57 c680 c681 c682 c683
e1 4 5 1 2 0
e2 7 6 2 1 0
e3 8 2 4 2 0
e4 1 4 2 3 0
e5 0 3 5 0 3
df = pd.concat([df] * 1000, ignore_index=True)
In [108]: %timeit (pd.DataFrame(df['column1'].values.tolist(), index=df.index))
100 loops, best of 3: 10.1 ms per loop
In [109]: %timeit (df['column1'].apply(pd.Series))
1 loop, best of 3: 1.14 s per loop
内容总结
以上是互联网集市为您收集整理的python-熊猫字典键到列全部内容,希望文章能够帮你解决python-熊猫字典键到列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。