使用 Series 更新 DataFrame 中的列

2024-01-29

我有一个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(使用前将#替换为@)

使用 Series 更新 DataFrame 中的列 的相关文章

随机推荐