如何从JSON列表的字典中提取全部siblings数据生成DataFrame
解决提取JSON中所有siblings数据的问题
我来帮你搞定这个问题!你现在的代码只拿到了每个siblings列表的第一个元素,想要把所有兄弟姐妹的姓名整合成列表、电话拼成逗号分隔的字符串对吧?咱们一步步来实现:
步骤1:创建初始DataFrame
首先把你的JSON数据转换成Pandas DataFrame:
import pandas as pd # 你的原始JSON数据 data = [{'id': '1', 'fnamae': 'Rasab', 'lname': 'Asdaf', 'Age': 21, 'Language': ['python', 'json'], 'parents': {'mother': {'name': 'Mrs. Mother', 'phone': '1212121212'}, 'father': {'name': 'Mr. Father', 'phone': '1212121212'}}, 'siblings': [{'name': 'jamuna', 'phone': 564851312}, {'name': 'Killana', 'phone': 1212121212}]}, {'id': '2', 'fnamae': 'Muddassir', 'lname': 'Jameel', 'Age': 25, 'Language': ['React', 'json'], 'parents': {'mother': {'name': 'Mrs. Mutherinlaw', 'phone': 9654512}, 'father': {'name': 'Mr. Futherinlaw', 'phone': 53154278}}, 'siblings': [{'name': 'Giallan', 'phone': 998742568}, {'name': 'Simba', 'phone': 12355875}]}, {'id': '3', 'fnamae': 'Farhan', 'lname': 'Akhtar', 'Age': 25, 'Language': ['Drupal', 'PHP'], 'parents': {'mother': {'name': 'Heung min son', 'phone': 89546487}, 'father': {'name': 'Kane', 'phone': 4564823545}}, 'siblings': [{'name': 'Xamcs', 'phone': 78654325}, {'name': 'sinfbad', 'phone': 45648232}]}] # 生成初始DataFrame df = pd.DataFrame(data)
步骤2:处理siblings列提取所需数据
用apply函数遍历每个siblings列表,分别提取姓名和电话并按要求格式化:
# 提取所有兄弟姐妹姓名,组成列表 df['sibling_names'] = df['siblings'].apply(lambda x: [item['name'] for item in x]) # 提取所有兄弟姐妹电话,转成字符串后用逗号分隔 df['sibling_phones'] = df['siblings'].apply(lambda x: ', '.join(str(item['phone']) for item in x)) # 可选:删除原始的siblings列,让结果更整洁 df = df.drop('siblings', axis=1)
结果说明
运行上述代码后,你会得到新的列:
sibling_names:每个条目的所有兄弟姐妹姓名组成的列表,比如第一条就是['jamuna', 'Killana']sibling_phones:每个条目的所有兄弟姐妹电话用逗号分隔的字符串,比如第一条就是'564851312, 1212121212'
为什么原来的代码不行?
你之前用s.str[0].values.tolist()只会取每个siblings列表的第一个元素,而apply可以遍历每个列表里的所有对象,从而获取全部数据。
内容的提问来源于stack exchange,提问作者zuestech
相关产品推荐
相关产品推荐

