2016-02-17 1 views
3

Предположим, что у меня есть ряд profile, который содержит:Заменить значения в серии панд из списка

settings-win.data.microsoft.com 1 
www.facebook.com     0.4 
clients4.google.com    1 
plus.google.com     0.86 

И список new_val, который содержит:

[0.8408964152537145, 0, 1.5, 0] 

Как заменить все значения моя profile со списком? Оно должно быть:

settings-win.data.microsoft.com 0.8408964152537145 
www.facebook.com     0 
clients4.google.com    1.5 
plus.google.com     0 

Я попробовал .replace() из Series, но это не похоже на работу.

PS. Я также смущен тем, как и когда использовать .replace(), поэтому, если бы вы могли объяснить это дальше, он будет очень признателен.

+0

'profile.values ​​= new_val' –

ответ

2

Я думаю, что вы можете создать новую Series с index старых Seriess и значений списка li:

print s 
settings-win.data.microsoft.com 1.00 
www.facebook.com     0.40 
clients4.google.com    1.00 
plus.google.com     0.86 
Name: profile, dtype: float64 

new_val = [0.8408964152537145, 0, 1.5, 0] 
s1 = pd.Series(new_val, index=s.index, name='profile') 

print s1 
settings-win.data.microsoft.com 0.840896 
www.facebook.com     0.000000 
clients4.google.com    1.500000 
plus.google.com     0.000000 
Name: profile, dtype: float64 

Но, может быть, лучше replace или map по dictionary, но результат отличается тем, что первое и третье значение такой же - doc:

d = {1: 0.8408964152537145, 0.4: 0, 0.86: 0} 
print d 
{1: 0.8408964152537145, 0.4: 0, 0.86: 0} 

print s.replace(d) 
settings-win.data.microsoft.com 0.840896 
www.facebook.com     0.000000 
clients4.google.com    0.840896 
plus.google.com     0.000000 
Name: profile, dtype: float64 

print s.map(d) 
settings-win.data.microsoft.com 0.840896 
www.facebook.com     0.000000 
clients4.google.com    0.840896 
plus.google.com     0.000000 
Name: profile, dtype: float64