使用Series更新DataFrame中的列

时间:2017-03-23 09:32:53

标签: python pandas

我在 pandas 中有一个DataFrame个对象,其中有多个行和列。为了便于说明,假设我有两个名为地址年龄的列。

我还有一个Series对象,可以将多个地址映射到年龄。

现在,我想使用该系列更新数据框。以下是我目前的工作方式:

for (address, age) in series.iteritems():
        df[df.address == address].age = age

这似乎有效,但速度太慢了。更新所有条目需要一分多钟。

是否有更快的方式进行此更新(最好不使用for循环)?

1 个答案:

答案 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