如何在Python中对同一列下同一行中的多个变量求和



这是我的df:

personUID LR_Value_y          diagnosis_y
0      abc1      10 10  ICD10_R99 ICD10_R98
1      abc5        200            ICD10_R99
2      abc1      10 10  ICD10_R99 ICD10_R98
3      abc2         15            ICD10_R98
4      abc3         14            ICD10_R97
5      abc4        100            ICD10_R97

我如何将这些添加到";10 10";值得到20?

对于每一行,您可以在空白处拆分字符串,将每个数字从字符串文字转换为整数,然后将它们相加。

使用列表理解完成上述操作的一种方法:

df['LR_Value_y'] = [sum(int(x) for x in string.split()) for string in df['LR_Value_y']]

使用str.splitexplode方法的另一种方法:

df['LR_Value_y'] = df['LR_Value_y'].str.split().explode().astype(int).groupby(level=0).sum()

输出:

personUID  LR_Value_y          diagnosis_y
0      abc1          20  ICD10 R99 ICD10 R98
1      abc5         200            ICD10 R99
2      abc1          20  ICD10 R99 ICD10 R98
3      abc2          15            ICD10 R98
4      abc3          14            ICD10 R97
5      abc4         100            ICD10 R97

请注意,这更改了LR_Value_y列的数据类型。如果您需要每个元素作为str类型,那么也可以使用astype(str)来实现(但我认为您并不真的想要这样(。

您可以用+替换空白并评估表达式:

df['LR_Value_y'] = pd.eval(df['LR_Value_y'].str.replace(r's+', '+'))
print(df)
# Output
personUID  LR_Value_y          diagnosis_y
0      abc1          20  ICD10_R99 ICD10_R98
1      abc5         200            ICD10_R99
2      abc1          20  ICD10_R99 ICD10_R98
3      abc2          15            ICD10_R98
4      abc3          14            ICD10_R97
5      abc4         100            ICD10_R97

最新更新