【问题标题】:Python Pandas SettingWithCopyWarning while creating new column创建新列时的Python Pandas SettingWithCopyWarning
【发布时间】:2020-03-05 19:42:29
【问题描述】:

我有一个数据框 df 为:

df.iloc[1:5,1:3]
                   Date  Month
4   2013-01-03 00:00:00      1
6   2013-01-04 00:00:00      1
10  2013-01-07 00:00:00      1
12  2013-01-08 00:00:00      1

我正在尝试以下方法:

df['newCol'] = df['Month']*2

我收到以下警告:

<input>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

执行上述操作的正确方法是什么?

【问题讨论】:

    标签: python-3.8 pandas-1.0


    【解决方案1】:

    在这种情况下,按照您的方式分配值是安全的。但是,如果您想避免警告以保持良好习惯,则可以按照消息中的说明进行操作,即:

    df.loc[:, 'newCol'] = df['Month']*2
    

    【讨论】:

    • @gyaan.anveyshak 我假设您指的是不同的question。问题不在于我建议的方法,而在于初步步骤,在这些步骤中,您只是创建数据框的别名,而不是按照问题答案中的说明复制它。
    • 是的,问题出在初步步骤之一。我是在发表评论后才知道的。
    猜你喜欢
    • 2016-10-31
    • 2014-02-28
    • 2017-06-25
    • 1970-01-01
    • 2018-01-23
    • 2020-09-07
    • 2017-07-16
    • 2015-12-08
    • 1970-01-01
    相关资源
    最近更新 更多