提问人:8ndra 提问时间:11/5/2022 最后编辑:8ndra 更新时间:11/6/2022 访问量:99
Pandas DataFrame 来自 dict 的嵌套列表
Pandas DataFrame from nested list of dict
问:
我正在从 facebook api 接收到字典列表的数据。我想从这个列表中创建 pandas DataFrame。
data = [{'account_id': '1234', 'account_name': 'account1', 'adset_id': '238', 'adset_name': 'Audio-Video', 'impressions': '24140', 'actions': [{'action_type': 'onsite_conversion.post_save', 'value': '1'}, {'action_type': 'link_click', 'value': '1081'}], 'date_start': '2022-11-01', 'date_stop': '2022-11-01'},
{'account_id': '1234', 'account_name': 'account2', 'adset_id': '591', 'adset_name': 'Moto', 'impressions': '16657', 'actions': [{'action_type': 'link_click', 'value': '620'}, {'action_type': 'post', 'value': '1'}], 'date_start': '2022-11-01', 'date_stop': '2022-11-01'} ]
但其中一列(操作)是嵌套的。我想将其“解压缩”到新列。
我在努力
df = pandas.DataFrame.from_dict(res)
结果是:
account_id account_name adset_id adset_name impressions actions date_start date_stop
0 1234 account1 238 Audio-Video 24140 [{'action_type': 'onsite_conversion.post_save', 'value': '1'}, {'action_type': 'link_click', 'value': '1081'}] 2022-11-01 2022-11-01
1 1234 account2 591 Moto 16657 [{'action_type': 'link_click', 'value': '620'}, {'action_type': 'post', 'value': '1'}] 2022-11-01 2022-11-01
但期望的结果应该是:
account_id account_name adset_id adset_name impressions onsite_conversion.post_save link_click post date_start date_stop
0 1234 account1 238 Audio-Video 24140 1 1081 0 2022-11-01 2022-11-01
1 1234 account2 591 Moto 16657 0 620 1 2022-11-01 2022-11-01
对熊猫最有效的方法是什么? 谢谢!
答:
0赞
mozway
11/5/2022
#1
IIUC,您可以尝试和:json_normalize
pivot
df = pd.DataFrame(data)
s = df.pop('actions').explode()
df = df.join(pd
.json_normalize(s).set_axis(s.index)
.reset_index()
.pivot_table(index='index', columns='action_type', values='value', fill_value=0)
)
print(df)
输出:
account_id account_name adset_id adset_name impressions date_start \
0 1234 account1 238 Audio-Video 24140 2022-11-01
1 1234 account2 591 Moto 16657 2022-11-01
date_stop link_click onsite_conversion.post_save post
0 2022-11-01 1081 1 0
1 2022-11-01 620 0 1
评论
action_type
{'action_type': 'post', 'value': '1'}
action_type