我有一个数据框,其中一些列以增量方式命名(例如A_1,A_2,A_3,...)。我想对它们执行操作,类似于:
A_1*1 + A_2*2 + A_3*3 + ...
有没有快速的方法,而不是只写下所有列的名称(总共15个)?
答案 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.split
和mul
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中添加了一列,所以我无法执行两次相同的操作。