Pandas DataFrame.assign () не работает должным образом для нескольких столбцов - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь переназначить несколько столбцов в DataFrame с изменениями. Ниже приведен упрощенный пример.

import pandas as pd 
d = {'col1':[1,2], 'col2':[3,4]}
df = pd.DataFrame(d)
print(df)
   col1  col2
0     1     3
1     2     4

Я использую метод assign (), чтобы добавить 1 к обоим 'col1' и 'col2'. Однако в результате мы добавляем 1 только к 'col2' и копируем результат в 'col1'.

df2 = df.assign(**{c: lambda x: x[c] + 1 for c in ['col1','col2']})
print(df2)
   col1  col2
0     4     4
1     5     5

Может кто-нибудь объяснить, почему это происходит, а также предложить правильный способ применения assign () на несколько столбцов?

1 Ответ

0 голосов
/ 02 апреля 2020

Я думаю, что lambda здесь нельзя использовать в течение l oop dict

df.assign(**{c: df[c] + 1 for c in ['col1','col2']})
...