2017-02-25 173 views
2

我有一個單列中的字典列表,但對於每一行,不同的post_id在一個單獨的列。我已經得到了我通過pd.concat(json_normalize(d) for d in data['comments'])尋找的數據幀,但我想另一列從原來的數據框中添加到該附加原來POST_ID熊貓合併列json_normalize後

原始

'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

首先考慮輸出數據幀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 
+0

你會如何規範這一點,如果你的JSON字符串是jsons的名單像 '[{「從」:「鮑勃」 ,'present':True},{'from':'Bob2','present':True}]' – iambdot

+0

您可能需要提出一個新問題。沒有嵌套元素就不需要標準化。 – Parfait

+0

https://stackoverflow.com/questions/48913603/pandas-list-of-json-into-columns – iambdot