python - Pandas 列字典拆分为新列和行
问题描述
我在熊猫数据框列中有一个字典,输入是,
import pandas as pd
df = pd.DataFrame([{'A': {'k1': 10}}, {'A': {'k2': 20, 'k3': 30}}, {'A': {'k4': 15}}])
df
A
0 {u'k1': 10}
1 {u'k3': 30, u'k2': 20}
2 {u'k4': 15}
我想将dict
“A”列中的键和值拆分为新列并拆分为行(取决于字典中的键数),基本上输出应该如下所示,
keys values
0 k1 10
1 k3 30
2 k2 20
3 k4 15
解决方案
使用列表推导和扁平化元组,然后使用DataFrame
构造函数:
L = [(k1, v1) for k, v in df['A'].to_dict().items() for k1, v1 in v.items()]
df = pd.DataFrame(L, columns = ['keys','values'])
print (df)
keys values
0 k1 10
1 k2 20
2 k3 30
3 k4 15
或创建DataFrame
和stack
:
df = (pd.DataFrame(df['A'].values.tolist())
.stack().reset_index(level=0, drop=True)
.reset_index())
df.columns = ['keys','values']
print (df)
keys values
0 k1 10.0
1 k2 20.0
2 k3 30.0
3 k4 15.0
推荐阅读
- jquery - 我在价格范围滑块上的输出不会显示逗号?
- javascript - Websocket - sockjs - InvalidStateError:连接尚未建立
- python - 将 key=value 对转换回 Python dicts
- django - 用于联系和查询的数据库设计和 Django 模型
- c++ - 输入值后如何在一个括号下显示值,例如“{6,7,8,9}
- reactjs - React Loadable SSR 并不总是给客户端完整的包列表,导致页面闪烁
- java - 为什么以下字符串显示 JSONException?
- postgresql - 即使 PostgreSQL RDS 暴露在互联网上,如何使用本地子网连接到 RDS 以避免延迟
- javascript - 如何实时显示我的数据库(Php、js、jquery、AJAX)
- uwp - 项目“AppUIBasics”需要部署才能启动