如何利用JSON数据填充DataFrame中的age字段?
问题:用JSON数据填充DataFrame的age字段最优方法
给定数据
JSON数据
people = { 'jon' : { 'age' : 20 } , 'peter' : { 'age' : 30 } }
DataFrame(以姓名为索引)
| city | age | |
|---|---|---|
| jon | foo | NaN |
| peter | foo | NaN |
尝试过的代码
for line in ['jon','peter']: df.at[line,'age'] = people[line]['age']
最优解决方案
推荐两种无需循环的高效方法,利用Pandas的索引对齐特性,比逐行赋值更简洁且性能更好:
方法一:构造Series直接赋值
通过字典推导从people中提取age信息,生成和DataFrame索引匹配的Series,直接赋值给age列:
import pandas as pd df['age'] = pd.Series({name: details['age'] for name, details in people.items()})
方法二:使用map方法遍历索引
利用DataFrame的索引(姓名)直接映射people中的age值:
df['age'] = df.index.map(lambda name: people[name]['age'])
这两种方法都能自动匹配索引完成赋值,无需手动指定遍历对象,在数据量较大时性能优势明显。
内容的提问来源于stack exchange,提问作者quiquee
相关产品推荐
相关产品推荐

