Python/Pandas-如何根据单元格值为每行赋值
我有这样的数据框:Python/Pandas-如何根据单元格值为每行赋值,python,pandas,Python,Pandas,我有这样的数据框: x y z 0 AA BB CC 1 BB NaN CC 2 BB AA NaN 和字典: d = {'AA': 1, 'BB': 2, 'CC': 3} 我想将每个单元格中的值与dictionary中的值进行比较,并为每一行添加另一个包含这些值总和的新列。因此,我需要这样的东西: x y z sum 0 AA BB CC 6 1 BB NaN CC 5 2 BB AA NaN 3 我需要最有效的解决方案,有什么想法吗?通过ax
x y z
0 AA BB CC
1 BB NaN CC
2 BB AA NaN
和字典:
d = {'AA': 1, 'BB': 2, 'CC': 3}
我想将每个单元格中的值与dictionary中的值进行比较,并为每一行添加另一个包含这些值总和的新列。因此,我需要这样的东西:
x y z sum
0 AA BB CC 6
1 BB NaN CC 5
2 BB AA NaN 3
我需要最有效的解决方案,有什么想法吗?通过axis=1使用每行,最后通过以下方式转换为int
:
第一部分是有效的,但当我想对结果中的值求和时,每行的值都是0。我做错了什么?嗯,那么用数字打印(df.replace(d))
返回DataFrame
?什么是print(df.replace(d).dtypes)
?什么是returnprint(df.replace(d).sum(axis=1))
-所有值都是0或一些浮点值?1。是“打印(df.replace(d))”返回带有数字的“数据帧”。2类型为“对象”。三。所有值均为“0.0”。工作正常。我的字典中缺少一个键。
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