【问题标题】:Warning: A value is trying to be set on a copy of a slice from a DataFrame -- Using List of Columns警告:试图在数据帧的切片副本上设置值——使用列列表
【发布时间】:2017-08-25 05:39:31
【问题描述】:

我收到以下警告: 试图在 DataFrame 中的切片副本上设置值。 尝试改用 .loc[row_indexer,col_indexer] = value

这是我收到警告的代码:

col_names = ['Column1', 'Column2']
features = X_train[col_names]
scaler = StandardScaler().fit(features.values)
features = scaler.transform(features.values)
X_train[col_names] = features

我意识到这种情况正在发生,因为我正在复制数据框。但是我在这里所做的与我在谷歌上找到的任何答案都不一样,所以我不知道如何将他们的答案应用于我的特定情况。看起来您收到此警告的正常情况是,如果您执行以下操作: d2 = 数据[数据['name'] == 'fred']

所以 .loc 不起作用。 .assign 也不是,因为我有一个列列表,而不仅仅是我可以分配的列。我只是不太确定如何以它想要的方式处理这个问题。

除了警告之外,它可以正常工作。所以我的方式是正确的。

【问题讨论】:

    标签: python-3.x pandas numpy scikit-learn


    【解决方案1】:

    我认为警告是要你做类似的事情

    X_train.loc[:, col_names] = features
    

    【讨论】:

    • 没关系,这是一种奇怪的行为 IMO
    • 如果你这样做,警告也会出现。至少对我来说
    猜你喜欢
    • 2019-03-30
    • 2016-06-16
    • 2016-12-22
    • 2021-03-05
    • 2021-10-13
    • 2022-07-15
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多