我有这样的数据框:
x y z
0 AA BB CC
1 BB NaN CC
2 BB AA NaN
和字典:
d = {'AA': 1, 'BB': 2, 'CC': 3}
我想将每个单元格的值与字典中的值进行比较,并为每行添加另一个新列,其中包含这些值的总和。结果我需要这样的东西:
x y z sum
0 AA BB CC 6
1 BB NaN CC 5
2 BB AA NaN 3
我需要最有效的解决方案,有什么想法吗?
使用replace
每行sum
按axis=1
,最后转换为int
按astype
:
print (df.replace(d))
x y z
0 1 2.0 3.0
1 2 NaN 3.0
2 2 1.0 NaN
df['sum'] = df.replace(d).sum(axis=1).astype(int)
print (df)
x y z sum
0 AA BB CC 6
1 BB NaN CC 5
2 BB AA NaN 3