Умножьте несколько столбцов условно на один столбец (легко в Excel) - PullRequest
0 голосов
/ 26 октября 2018

У меня есть такой фрейм данных:

a   b   c   d   m1   m2 
3   2   2   2   5    4 
1   4   1   1   5    4   
3   2   2   3   5    4

Я хотел бы умножить a и b для m1 и c и d для m2:

a   b   c   d   m1   m2 
15  10  8   8   5    4 
5   20  4   4   5    4   
15  10  8   12  5    4

Также сохраняется исходная структура данных. Это довольно просто в Excel, но Pandas оказывается сложным, поскольку, если я попробую первое умножение (m1), DF отбросит неиспользуемые столбцы.

ура!

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вот один из способов использования np.repeat:

df.iloc[:, :4] *= np.repeat(df.iloc[:, 4:].values, 2, axis=1)

print(df)

    a   b  c   d  m1  m2
0  15  10  8   8   5   4
1   5  20  4   4   5   4
2  15  10  8  12   5   4
0 голосов
/ 26 октября 2018

Используйте mul с подмножеством столбцов, определяемым списком имен столбцов:

df[['a', 'b']] = df[['a', 'b']].mul(df['m1'], axis=0)
df[['c', 'd']] = df[['c', 'd']].mul(df['m2'], axis=0)

print (df)
    a   b  c   d  m1  m2
0  15  10  8   8   5   4
1   5  20  4   4   5   4
2  15  10  8  12   5   4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...