我在 pandas 中有一个DataFrame
个对象,其中有多个行和列。为了便于说明,假设我有两个名为地址和年龄的列。
我还有一个Series
对象,可以将多个地址映射到年龄。
现在,我想使用该系列更新数据框。以下是我目前的工作方式:
for (address, age) in series.iteritems():
df[df.address == address].age = age
这似乎有效,但速度太慢了。更新所有条目需要一分多钟。
是否有更快的方式进行此更新(最好不使用for循环)?
答案 0 :(得分:2)
我认为你需要map
:
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