基于多个条件求和数据帧中的不同行



我有以下数据帧:

dataset = {
'String': ["ABCDEF","HIJABC","ABCHIJ","DEFABC"],
'Bool':[True,True,False,False],
'Number':[10,20,40,50]}
df = pd.DataFrame(dataset)

String   Bool  Number
0  ABCDEF   True      10
1  HIJABC   True      20
2  ABCHIJ  False      40
3  DEFABC  False      50

我想将列NumberBoolFalse的行与列BoolTrue的行相加:

如果一行的String的倒数不等于该行的String,则可以将行匹配并相加。

  • 在这种情况下,ABCHIJ(其中boolFalse(不等于ABCDEF的倒数,所以我对数字求和:10+40。

  • 其中BoolTrueHIJABC与其中BoolFalseDEFABC相加,结果为70

预期输出:

String   Bool  Number
0  ABCDEF   True      50
1  HIJABC   True      70
2  ABCHIJ  False      40
3  DEFABC  False      50

我希望我的解释足够好,有没有办法达到上述结果?

一种方法是这样的:

df_true = df[df['Bool'] == True]
df_false = df[df['Bool'] == False]
for i in df_false['String']:
idx = df_true[df_true['String'] != (i[3:] + i[:3]) ].index[0]
current_num = df.loc[df.index == idx, 'Number'].values[0]
added_num = df[df['String'] == i]['Number'].values[0]
df.loc[df.index == idx, 'Number'] =  current_num + added_num

我希望它能帮助