【发布时间】:2019-12-03 10:29:00
【问题描述】:
我需要帮助规范化 pandas DataFrame 中的列。 这是输入
df = {0:[{'Code' : 1,'Category' : 'X'},
{'Code' : 2,'Category' : 'Y','snapshots' : [{'Address': {'City': 'City B'}}] },
{'Code' : 3,'Category' : 'Z','snapshots' : [{'Address': {'City': 'City C'}}] }
]
}
df = pd.DataFrame(df)
我的代码:
df_1 = pd_json.json_normalize(df[0],
meta=["Code"],
record_path=["snapshots"],
record_prefix="snapshots.",
errors="ignore"
)
df_2 = (df_1.drop('snapshots.Address', 1)
.assign(**df_1["snapshots.Address"].dropna()
.apply(pd.Series).add_prefix('snapshots.Address.')))
错误:
Traceback(最近一次通话最后一次):
文件“”,第 5 行,在 错误=“忽略”
文件 "C:\Users\my_user\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\json\normalize.py", 第 267 行,在 json_normalize _recursive_extract(data, record_path, {}, level=0)
文件 "C:\Users\my_user\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\json\normalize.py", 第 244 行,在 _recursive_extract recs = _pull_field(obj, path[0])
文件 "C:\Users\my_user\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\json\normalize.py", 第 189 行,在 _pull_field 结果 = 结果[规格]
KeyError: 'snapshots'
DataFrame 中缺少“Code=1”的“快照”。 我的想法是将“快照”添加到 DataFrame 中丢失的地方。但我不知道该怎么做。
预期结果:
df_2
Out[617]:
Code snapshots.Address.City
0 1 NaN
1 2 City B
2 3 City C
【问题讨论】:
标签: python python-3.x pandas dataframe nested