Python 从Dataframe中的JSON列中提取特定值
首先,我将json转换为数据帧Python 从Dataframe中的JSON列中提取特定值,python,json,pandas,Python,Json,Pandas,首先,我将json转换为数据帧 ad_data = '{ "data":[ { "impressions":"11111", "spend":"123", "conversions":[ { "action_type":"s
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'])
所以我得到了数据帧
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'])
印象
花费
转换
出站点击次数
开始日期
停车日期
11111
123
[{'action_type':'start_trial_total','value':'6'},{'action_type':'subscribe_mobile_app','value':'3'}]
[{'action\u type':'outbound\u click','value':'1。。。
2020-01-23
2021-01-23
22222
312
[{'action\u type':'start\u trial\u total','value':'6'}]
[{'action\u type':'outbound\u click','value':'1。。。
2020-01-24
2020-01-24
...
...
...
...
...
...
尝试:
因为数据框的
conversions
列包含要在其上操作的词典列表。
您可以创建一个单独的函数,该函数可以接受这些列表作为参数,然后在这些列表中的词典中进行检查(如果其中有subscribe\u mobile\u app
),然后相应地返回值:
def subscribe_mobile_app_values(lst):
val = 0
for i in lst:
if i["action_type"] == "subscribe_mobile_app":
val = i["value"]
break
return val
然后将此函数应用于数据帧中的conversions列:
df['conversions'] = df['conversions'].apply(subscribe_mobile_app_values)
它返回错误:ValueError:格式错误的节点或字符串:[{'action\u type':'start\u trial\u total','value':'6'},{'action\u type':'subscribe\u mobile\u app','value':'3'},在没有ast.literal的情况下尝试一次。literal\u eval没有ast.literal\u eval效果很好,谢谢!据我所知,你想要一个函数,可以返回你提到的动作类型的值?@mrdaf你是否想根据你之前的评论改进
订阅移动应用程序的值
功能,现在似乎已经删除了。只是检查你在回答这个问题时是否需要更多的帮助,或者它是否解决了你的问题?