首页 > 解决方案 > 将列表合并到数据框中

问题描述

请耐心等待,因为我是 python 新手。我正在遍历数据并获取需要组合成一个熊猫数据框的多个列表。

然后我需要添加标题,以便我可以执行计算。

问题是每个项目都被视为一个单独的实体。请帮忙

for r in rows:
  person_info = list()
  person_info.append(r['metadata']['name'])
  person_info.append(r['metadata']['CountryId'])
  person_info.append(r['metadata']['StateId'])
  person_info.append(r['metadata']['Income'])
  print(person_info)

这是输出:

['mike' , 1, 4, 20000]
['mary', 2, 5, 30000]
['jane', 3, 6, 40000]

这是带有标题“name”、“id_a”、“id_b”和“income”的数据帧的所需输出:

name    id_a    id_b    income
mike    1       4       20000
mary    2       5       30000
jane    3       6       40000

标签: pythonlistpandasdataframe

解决方案


Pandas 直接接受字典列表。不要为此而抗争,您可以简单地i['metadata']为列表中的每个项目提取。

此后您唯一的任务是重命名和排序列。

r = [{'metadata': {'name': 'mike', 'CountryId': 1, 'StateId': 4, 'Income': 20000}},
     {'metadata': {'name': 'mary', 'CountryId': 2, 'StateId': 5, 'Income': 30000}},
     {'metadata': {'name': 'jane', 'CountryId': 3, 'StateId': 6, 'Income': 40000}}]

df = pd.DataFrame([i['metadata'] for i in r])\
       .rename(columns={'CountryId': 'id_a', 'StateId': 'id_b', 'Income': 'income'})\
       .reindex(['name', 'id_a', 'id_b', 'income'], axis=1)

print(df)

   name  id_a  id_b  income
0  mike     1     4   20000
1  mary     2     5   30000
2  jane     3     6   40000

推荐阅读