我有一个DataFrame
对象在pandas具有多个行和列。出于说明目的,假设我有两个这样的列,名为Address and Age.
我也有一个Series
将多个地址映射到年龄的对象。
现在,我想使用该系列更新数据框。这是我目前的做法:
for (address, age) in series.iteritems():
df[df.address == address].age = age
这似乎有效,但速度太慢。更新所有条目需要一分多钟的时间。
有没有更快的方法来进行此更新(最好不使用 for 循环)?
我想你需要map http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html:
df = pd.DataFrame({'Address':['a','d','f'],
'Age':[4,5,6]})
print (df)
Address Age
0 a 4
1 d 5
2 f 6
s = pd.Series([10,4,6], index=['a','f','d'])
print (s)
a 10
f 4
d 6
dtype: int64
df.Age = df.Address.map(s)
#a bit faster in big df
#df.Age = df.Address.map(s.to_dict())
print (df)
Address Age
0 a 10
1 d 6
2 f 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)