Pandas DataFrame.assign() 对多列无法正常工作

Pandas DataFrame.assign() doesn't work properly for multiple columns

我正在尝试通过修改重新分配 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() 方法将 'col1' 和 'col2' 都加 1。 但是,结果是只对'col2'加1,然后将结果复制到'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() 应用于多列的正确方法吗?

我觉得这里的lambda不能在for循环内使用dict

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