Панды умножают другие столбцы на другие - PullRequest
0 голосов
/ 10 сентября 2018

Я хотел бы применить коэффициент масштабирования к некоторым данным:

col1   col2   col3

10      4      5
100     2      3
1000    6      7

Тогда я бы хотел, чтобы результат был:

col1   col2   col3

10      40       50
100     200      300
1000    6000     7000

Я пытался использовать лямбду, но это продолжало выдавать мне ошибки.

1 Ответ

0 голосов
/ 10 сентября 2018

pandas.DataFrame.mul с axis=0

Когда Pandas работает между DataFrame и Series, он выравнивает индекс Series со столбцами DataFrame.Мы можем изменить это поведение, используя эквивалентный метод операции и передав аргумент axis=0, чтобы сообщить Pandas о выравнивании индекса Series с индексом DataFrame.

df[['col2', 'col3']] = df[['col2', 'col3']].mul(df['col1'], axis=0)
df

   col1  col2  col3
0    10    40    50
1   100   200   300
2  1000  6000  7000

Более короткий способ сделать это

df.update(df.drop('col1', 1).mul(df.col1, axis=0))

в линии

А не на месте .То есть, изготовить копию и оставить оригинал в покое

df.assign(**df.drop('col1', 1).mul(df.col1, axis=0))

   col1  col2  col3
0    10    40    50
1   100   200   300
2  1000  6000  7000

После мысли

Я возился с этим совершенно хакерским способом сделать это.

[df.get(c).__imul__(df.col1) for c in [*df][1:]];

Супер брутто, поскольку это зависит от побочного эффекта понимания и отбрасывает результат понимания.

Пожалуйста, игнорируйте это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...