You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于多条件对DataFrame不同行的Number列执行求和操作?

可以实现,具体解决方案如下

首先,我们可以通过拆分数据、检查字符串反转条件、累加数值这几个步骤完成需求:

  1. 导入依赖并创建DataFrame
import pandas as pd

dataset = {
     'String': ["ABCDEF","HIJABC","ABCHIJ","DEFABC"],
    'Bool':[True,True,False,False],
    'Number':[10,20,40,50]}

df = pd.DataFrame(dataset)
  1. 定义字符串反转函数
    用于判断两行字符串是否互为反转:
def reverse_string(s):
    return s[::-1]
  1. 拆分True和False行并重置索引
    将原DataFrame拆分为布尔值为True和False的两组,重置索引方便一一配对处理:
true_df = df[df['Bool']].reset_index(drop=True)
false_df = df[~df['Bool']].reset_index(drop=True)
  1. 按条件累加数值
    遍历每一对True和False行,若两者字符串不互为反转,则将False行的Number值加到对应True行的Number上:
for i in range(len(true_df)):
    true_str = true_df.loc[i, 'String']
    false_str = false_df.loc[i, 'String']
    if true_str != reverse_string(false_str):
        true_df.loc[i, 'Number'] += false_df.loc[i, 'Number']
  1. 合并结果并还原原索引
    将处理后的True行和原False行合并,还原为原DataFrame的索引顺序:
result = pd.concat([true_df, false_df]).reindex(df.index)
print(result)

执行上述代码后,输出结果与你期望的一致:

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

内容的提问来源于stack exchange,提问作者the phoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:54:19