我有一个像这样的熊猫数据框
In [1]: import pandas as pd
In [2}: df = pd.DataFrame([['X', 2, 3, 4, 5 ,6, 7], ['Y',8, 9, 10, 11, 12, 13], ['X', 14, 15, 16, 17, 18, 19]], \
columns=['name', 'X 1_V1', 'X 1_V2', 'Y 1_V1', 'Y 1_V2','X 2_V1', 'X 2_V2'])
In[3]: print(df)
Out[3]: name X 1_V1 X 1_V2 Y 1_V1 Y 1_V2 X 2_V1 X 2_V2
0 X 2 3 4 5 6 7
1 Y 8 9 10 11 12 13
2 X 14 15 16 17 18 19
我想对以name列中的值开始并以V1结束的列求和。所以第一行和第三行是第二列和第五列的总和,而第二行是第四列的总和。
In[3]: df['sum']
Out[3]:
0 8
1 10
2 32
Name: sum, dtype: int64
我试过了
df["sum_Area"] = df[[x for x in df.columns if (x.split(' ')[0] == df['name']) and (x.endswith('peak_area'))]].sum(axis = "columns")
但是收到错误:ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()代码>列名是字符串
结果我想在图片格式
df['sum']=df.apply(lambda x:sum([x[c] for c in df.columns if c.split()[0]==x['name'] and c.endswith('V1')]),axis=1)