如何使用字典的get方法来计算新的pandas列?

时间:2019-01-22 11:02:20

标签: pandas

我想创建一个新列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

我猜我需要使用map,如下所示: df['col2'] = df['col1'].map(d) 但是,如果缺少键而不是Nan,如何获得0?

2 个答案:

答案 0 :(得分:2)

mapfillna一起使用:

df['col2'] = [d.get(value, 0) for value in df['col1']]

OR:

df['col2'] = df['col1'].map(d).fillna(0, downcast='infer')

print(df)
  col1  col2
0    a     1
1    b     2
2    c     0

答案 1 :(得分:0)

尝试一下

df['col2']=df['col1'].map(d).fillna(0)

O / P:

  col1  col2
0    a   1.0
1    b   2.0
2    c   0.0