首页 > 解决方案 > 根据列头对一行中的值求和

问题描述

我有一个这样的数据集: 在此处输入图像描述

我想用下面的代码分别计算每一行中apple_*_C,apple_*_Cr的总和。apple_*_Cu

for test in ['apple']:
    df[f'{test}_C']=df.filter(regex=f'^{test}_\d_C').sum(1)
    df[f'{test}_C']=df.filter(regex=f'^{test}_\d_Cr').sum(1)
    df[f'{test}_C']=df.filter(regex=f'^{test}_\d_Cu').sum(1)

但是,将连续df[f'{test}_C']=df.filter(regex=f'^{test}_\d_C').sum(1)计算 和 的总和apple_*_C,而不是仅计算。请告知我应该如何修改它。apple_*_Crapple_*_Cuapple_*_C

标签: pythonregexdataframe

解决方案


import pandas as pd

data = {
    "Apple_1_C" : [1,2],
    "Apple_2_C" : [2,3],
    "Apple_3_C" : [3,4],
    "Apple_1_Cr" : [4,5],
    "Apple_1_Cr" : [5,6],
    "Apple_1_Cu" : [6,7],    
    "Apple_2_Cu" : [7,8],        
}

df = pd.DataFrame(data)

df

在此处输入图像描述

for i, test in enumerate(['Apple']):
    df[f'{test}_C_sum']=df.filter(regex=f'^{test}_\d_C$').sum(1)
    df[f'{test}_Cr_sum']=df.filter(regex=f'^{test}_\d_Cr').sum(1)
    df[f'{test}_Cu_sum']=df.filter(regex=f'^{test}_\d_Cu').sum(1)
df

在此处输入图像描述


推荐阅读