【问题标题】:Pandas DataFrame.assign() doesn't work properly for multiple columnsPandas DataFrame.assign() 不适用于多列
【发布时间】:2020-07-13 18:59:59
【问题描述】:

我正在尝试通过修改重新分配 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() 应用于多个列的正确方法吗?

【问题讨论】:

    标签: python pandas dataframe assign


    【解决方案1】:

    我认为这里的lambda不能在for循环中使用dict

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

    【讨论】:

    • 你能解释一下为什么不能使用lambda吗?
    • @JKlim 你在 for 循环中调用了 lambda 两次,并且你想首先创建 dict ,但是,dict 值具有函数 lambda
    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2014-12-15
    • 2016-05-22
    • 1970-01-01
    • 2014-08-16
    • 2022-01-02
    相关资源
    最近更新 更多