将列表合并到数据框中

nia*_*ife 5 python list dataframe pandas

请耐心等待,因为我是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)
Run Code Online (Sandbox Code Playgroud)

这是输出:

['mike' , 1, 4, 20000]
['mary', 2, 5, 30000]
['jane', 3, 6, 40000]
Run Code Online (Sandbox Code Playgroud)

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

name    id_a    id_b    income
mike    1       4       20000
mary    2       5       30000
jane    3       6       40000
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 0

person_info您可以在循环外部创建变量并tuple在每次迭代中附加 s:

person_info = list()
for r in rows:
  person_info.append((r['metadata']['name'], r['metadata']['CountryId'], r['metadata']['StateId'], r['metadata']['Income']))
Run Code Online (Sandbox Code Playgroud)

解决方案list comprehension

person_info = [(r['metadata']['name'], r['metadata']['CountryId'], r['metadata']['StateId'], r['metadata']['Income']) for r in rows]
Run Code Online (Sandbox Code Playgroud)
df = pd.DataFrame(person_info, columns=["name", "id_a", "id_b", "income"]) 
Run Code Online (Sandbox Code Playgroud)

如果输入是另一种可能的解决方案json是使用json_normalize

import json
from pandas.io.json import json_normalize    

with open('myJson.json') as data_file:    
    data = json.load(data_file)  

df = json_normalize(data, 'metadata')
Run Code Online (Sandbox Code Playgroud)