pandas在json_normalize之后合并列

时间:2017-02-25 02:06:37

标签: python pandas

我在单个列中有一个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

感谢您的帮助

1 个答案:

答案 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