我在单个列中有一个dicts列表,但对于每一行,在单独的列中有不同的 post_id 。我已经通过pd.concat(json_normalize(d) for d in data['comments'])
获取了我要查找的数据框,但我想从原始数据框中添加另一列以附加原始 post_id 。
原始
'post_id' 'comments'
123456 [{'from':'Bob','present':True}, {'from':'Jon', 'present':False}]
当前结果(在json_normalize
之后)
comments.from comments.present
Bob True
Jon False
期望的结果
comments.from comments.present post_id
Bob True 123456
Jon False 123456
感谢您的帮助
答案 0 :(得分:2)
首先考虑输出数据框to_json
,然后运行json_normalize
:
import json
from pandas import DataFrame
from pandas.io.json import json_normalize
df = DataFrame({'post_id':123456,
'comments': [{'from':'Bob','present':True},
{'from':'Jon', 'present':False}]})
df_json = df.to_json(orient='records')
finaldf = json_normalize(json.loads(df_json), meta=['post_id'])
print(finaldf)
# comments.from comments.present post_id
# 0 Bob True 123456
# 1 Jon False 123456