[英]Extract a value from a JSON string stored in a pandas data frame column
我有一個 pandas dataframe 和一個名為json2的列,其中包含來自 API 調用的 json 字符串:
"{'obj': [{'timestp': '2022-12-03', 'followers': 281475, 'avg_likes_per_post': 7557, 'avg_comments_per_post': 182, 'avg_views_per_post': 57148, 'engagement_rate': 2.6848}, {'timestp': '2022-12-02', 'followers': 281475, 'avg_likes_per_post': 7557, 'avg_comments_per_post': 182, 'avg_views_per_post': 57148, 'engagement_rate': 2.6848}]}"
我想制作一個 function 迭代該列並在timestp與給定日期匹配時提取關注者數量
def get_followers(x):
if x['obj']['timestp']=='2022-12-03':
return x['obj']['followers']
df['date'] = df['json2'].apply(get_followers)
我應該在日期列中得到 281475 作為值,但出現錯誤:“列表索引必須是整數或切片,而不是 str”
我做錯了什么? 先感謝您
名為obj的鍵出現在字典列表中。 在定義另一個鍵之前,您還必須指定列表元素的索引。
import ast
df['json2']=df['json2'].apply(ast.literal_eval) #if dictionary's type is string, convert to dictionary.
def get_followers(x):
if x['obj'][0]['timestp']=='2022-12-03':
return x['obj'][0]['followers']
df['date'] = df['json2'].apply(get_followers)
你也可以使用這個。 這與您正在使用的 function 的作用相同:
df['date'] = df['json2'].apply(lambda x: x['obj'][0]['followers'] if x['obj'][0]['timestp']=='2022-12-03' else None)
對於字典列表:
def get_followers(x):
for i in x['obj']:
if i['timestp'] == '2022-12-03':
return i['followers']
break
df['date'] = df['json2'].apply(get_followers)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.