忍受我,因为我是python的新手.我正在迭代数据并获得我需要组合成一个pandas数据帧的多个列表.
问题是每个项目都被视为一个单独的实体.请帮忙
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
解决方法:
您可以在循环外创建变量person_info并在每次迭代中追加元组:
person_info = list()
for r in rows:
person_info.append((r['Metadata']['name'], r['Metadata']['CountryId'], r['Metadata']['StateId'], r['Metadata']['Income']))
列表理解的解决方案:
person_info = [(r['Metadata']['name'], r['Metadata']['CountryId'], r['Metadata']['StateId'], r['Metadata']['Income']) for r in rows]
df = pd.DataFrame(person_info, columns=["name", "id_a", "id_b", "income"])
如果输入是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')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。