我在单列中有一个字典列表,但对于每一行,在单独的列中有一个不同的 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

谢谢你的帮助

最佳答案

考虑首先输出数据帧 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

关于python - json_normalize 后的 Pandas 合并列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42451155/

10-11 03:38