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']})
我正在尝试通过修改重新分配 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']})