Применить формулы к столбцам данных с инкрементными именами - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть фрейм данных с некоторыми столбцами, названными постепенно (например, A_1, A_2, A_3, ...). Я хочу выполнить над ними операцию, например:

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

Есть ли быстрый способ сделать это, вместо того, чтобы просто записать имя всех столбцов (всего их 15)?

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Например, у вас есть следующий фрейм данных

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
0 голосов
/ 24 апреля 2018

Вы также можете использовать apply, например:

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

Примечание: поскольку я добавляю столбец в df, я не могу выполнить одну и ту же операцию дважды.

0 голосов
/ 24 апреля 2018

итерация по столбцам, извлечение коэффициента для умножения и повторное присвоение умноженных значений этим столбцам

for k in df.columns:
    factor = k.split('_')[-1]
    df[k] = df[k]*int(factor)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...