如何使用字典获取方法来计算新的熊猫列



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

mapfillna一起使用:

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

最新更新