无法将字典转换为pandas DataFrame的技术求助
问题描述
我有如下结构的字典:
外层键为EDH3 Comdty、EDM3 Comdty,每个键对应的值是包含Tenor、Type、Rate的子字典。
目标是转换成如下格式的DataFrame:
| Tenor | Type | Rate | |
|---|---|---|---|
| EDH3 Comdty | 310 DY | FUTURE_RATE | 3.84000000 |
| EDM3 Comdty | 401 DY | FUTURE_RATE | 3.71999999 |
但执行pd.DataFrame(results.items())得到了不符合预期的输出:
| EDH3 Comdty | EDM3 Comdty | |
|---|---|---|
| 0 | {'Tenor': '310 DY', 'Type': 'FUTURE_RATE', 'Rate': 3.84000000} | {'Tenor': '401 DY', 'Type': 'CASH', 'Rate': 3.71999999} |
期望将字典的键作为DataFrame的索引。
解决方案
直接使用pd.DataFrame.from_dict()方法并指定orient='index'参数,即可实现需求:
import pandas as pd # 示例字典结构 results = { 'EDH3 Comdty': {'Tenor': '310 DY', 'Type': 'FUTURE_RATE', 'Rate': 3.84000000}, 'EDM3 Comdty': {'Tenor': '401 DY', 'Type': 'CASH', 'Rate': 3.71999999} } # 转换为目标格式DataFrame df = pd.DataFrame.from_dict(results, orient='index') # 若不需要索引列名称,可执行该行 df.index.name = None
执行后得到的DataFrame与预期格式完全一致:
| Tenor | Type | Rate | |
|---|---|---|---|
| EDH3 Comdty | 310 DY | FUTURE_RATE | 3.84000000 |
| EDM3 Comdty | 401 DY | CASH | 3.71999999 |
原代码问题说明
pd.DataFrame(results.items())会将字典的键值对拆分为两列,子字典被当作单个单元格的内容,无法展开为列。而orient='index'参数会告诉pandas:将外层字典的键作为行索引,内层子字典的键作为列名,自动把子字典的内容映射到对应列中。
内容的提问来源于stack exchange,提问作者TourEiffel
相关产品推荐
相关产品推荐

