在具有增量名称的数据框列上应用公式

时间:2018-04-24 15:30:19

标签: python pandas dataframe

我有一个数据框,其中一些列以增量方式命名(例如A_1,A_2,A_3,...)。我想对它们执行操作,类似于:

A_1*1 + A_2*2 + A_3*3 + ...

有没有快速的方法,而不是只写下所有列的名称(总共15个)?

3 个答案:

答案 0 :(得分:0)

遍历列,提取要乘以的因子,并将乘以的值重新分配回那些列

for k in df.columns:
    factor = k.split('_')[-1]
    df[k] = df[k]*int(factor)

答案 1 :(得分:0)

例如,您有以下数据框

df=pd.DataFrame({'A_1':[1,2],'A_2':[1,2]})

我们只需要使用str.splitmul

s=df.columns.str.split('_').str[1].values.astype('int')

df.mul(s,axis=1)

Out[508]: 
   A_1  A_2
0    1    2
1    2    4

如果需要sum

df.mul(s,axis=1).sum(axis=1)
Out[509]: 
0    3
1    6
dtype: int64

答案 2 :(得分:0)

您还可以使用apply,例如:

df['total'] = df.apply(lambda x: sum([x[col]*int(col.split('_')[-1]) for col in df.columns]),axis=1)

注意:因为我在df中添加了一列,所以我无法执行两次相同的操作。