首先,我将json转换为数据帧
ad_data = '{
"data":[
{
"impressions":"11111",
"spend":"123",
"conversions":[
{
"action_type":"start_trial_total",
"value":"6"
},
{
"action_type":"subscribe_mobile_app",
"value":"3"
}
],
"outbound_clicks_ctr":[
{
"action_type":"outbound_click",
"value":"1.869306"
}
],
"date_start":"2020-01-23",
"date_stop":"2020-01-23"
},
{
"impressions":"22222",
"spend":"321",
{
"action_type":"start_trial_total",
"value":"6"
}
],
"outbound_clicks_ctr":[
{
"action_type":"outbound_click",
"value":"2.328902"
}
],
"date_start":"2020-01-24",
"date_stop":"2020-01-24"
}
]
}'
df = pd.DataFrame(ad_data['data'])
所以我得到了数据帧
现在,我只想从subscribe\u mobile\u app存在的conversions列中提取值,在其他情况下,插入0并获得如下表
我怎样才能在熊猫身上得到这样的结果
在使用循环将JSON转换为Dataframe之前,我还尝试提取值,并将其添加到列表中,然后将其作为新列添加到Dataframe中,但这个计划对我也不起作用
subscribe = []
for i in ad_data['data']:
for sub in i['conversions']:
if sub['action_type'] == 'subscribe_mobile_app':
subscribe.append(sub['value'])
else:
subscribe.append(None)
结果是这样的:
[None,3,None, None...]
因为数据帧的
conversions
列包含要操作的词典列表。 您可以创建一个单独的函数,该函数可以接受这些列表作为参数,然后在这些列表中的字典中进行检查(如果其中有subscribe_mobile_app
),然后相应地返回值:然后将此函数应用于数据帧中的conversions列:
尝试:
相关问题 更多 >
编程相关推荐