2017-03-23 64 views
2

我在pandas中有一個DataFrame對象,具有多行和多列。爲了說明的目的,假設我有兩個這樣的列名爲地址年齡使用系列更新數據框中的列

我還有一個Series對象,它將許多地址映射到不同的年齡段。

現在,我想使用該系列更新數據幀。以下是我目前如何做到這一點:

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

這似乎工作,但它太慢了。更新所有條目需要一分多鐘。

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

回答

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 
+0

好多了,謝謝! – sdasdadas

相關問題