我想创建一个新的列col2
并使用字典进行计算。当找不到键时,我想将值计算为 0:
import pandas as pd
df = pd.DataFrame({'col1': {0: 'a', 1: 'b', 2: 'c'}})
d = {'a':1,'b':2}
col1
0 a
1 b
2 c
所以我尝试:
df['col2'] = d.get(df['col1'], 0)
builtins.TypeError: 'Series' objects are mutable, thus they cannot be hashed
我猜我需要使用地图,就像这样: df['col2'] = df['col1'].map(d)
但是当缺少键而不是 Nan 时如何获得 0?
将map
与fillna
一起使用:
df['col2'] = [d.get(value, 0) for value in df['col1']]
或:
df['col2'] = df['col1'].map(d).fillna(0, downcast='infer')
print(df)
col1 col2
0 a 1
1 b 2
2 c 0
试试这个,
df['col2']=df['col1'].map(d).fillna(0)
操作/操作:
col1 col2
0 a 1.0
1 b 2.0
2 c 0.0