这是我的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.split
和explode
方法的另一种方法:
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