python - 如何将嵌套字典转换为 pandas DataFrame
问题描述
我有以下嵌套字典dict
:
{
'x1':
{
'k1':
{
'first_col': 'Date',
'col_type': pandas._libs.tslibs.timestamps.Timestamp,
'col_min_val': Timestamp('2017-12-04 00:00:00')
},
'k2':
{
'first_col': 'Date',
'col_type': pandas._libs.tslibs.timestamps.Timestamp,
'col_min_val': Timestamp('2018-02-02 00:00:00')
}
}
'x2':
{
'k1':
{
'first_col': 'Date',
'col_type': pandas._libs.tslibs.timestamps.Timestamp,
'col_min_val': Timestamp('2017-12-04 05:00:00')
}
}
}
我需要得到这个熊猫数据框:
col1 col2 first_col col_type col_min_val
x1 k1 Date pandas._libs.tslibs.timestamps.Timestamp Timestamp('2017-12-04 00:00:00')
x1 k2 Date pandas._libs.tslibs.timestamps.Timestamp Timestamp('2018-02-02 00:00:00')
x2 k1 Date pandas._libs.tslibs.timestamps.Timestamp Timestamp('2017-12-04 05:00:00')
这是我尝试过的,但结果与预期的不一致:
pd.DataFrame(dict).stack().reset_index()
解决方案
使用两个级别的附加键创建字典列表并调用DataFrame
构造函数:
编辑:
不要dict
用于变量名,因为 python 代码字 ( builtin
)。
#https://stackoverflow.com/a/34757497
L = [dict(d[i][j], **{'col1': i,'col2': j})
for i in d.keys()
for j in d[i].keys()]
df = pd.DataFrame(L)
print (df)
col1 col2 col_min_val col_type \
0 x1 k1 2017-12-04 00:00:00 pandas._libs.tslibs.timestamps.Timestamp
1 x1 k2 2018-02-02 00:00:00 pandas._libs.tslibs.timestamps.Timestamp
2 x2 k1 2017-12-04 05:00:00 pandas._libs.tslibs.timestamps.Timestamp
first_col
0 Date
1 Date
2 Date
推荐阅读
- javascript - Firebase 云功能:onUpdate 更改参数错误去删除值
- apache-flink - 哪个版本稳定?
- python - 在 Linux 上安装 pyodbc 失败
- django - 管理视图中的 Django ImageField url 不正确
- php - 在 Woocommerce 的存档页面上获取特定产品属性的 slug 列表
- sql - PLSQL 中的错误 -
- cordova - Cordova ios [cordova-plugin-openwith-ios 插件] app myHandler 函数未执行
- javascript - 如何从nodejs中的外部url检索DOM对象
- java - 此 URL 不支持 HTTP 方法 GET WL 12.2.1 上的 Rest-full WS
- javascript - url 包含非 asciii 字符时的 HTTP 400 错误请求