【问题标题】:Why am I getting a SettingWithCopyWarning when trying to filter rows in pandas? How can I properly filter my data rows?为什么在尝试过滤 pandas 中的行时会收到 SettingWithCopyWarning?如何正确过滤我的数据行?
【发布时间】:2020-10-11 20:29:15
【问题描述】:

总的来说,我对数据分析还很陌生,更不用说 pandas 和 python,但我已经做了很多搜索来尝试解决这个问题,但无法确定到底是什么问题。我希望有人能抓住它。当我运行我的函数时,它可以工作,但我遇到了以下错误:SettingWithCopyWarning: 试图在 DataFrame 中的切片副本上设置值。 尝试改用 .loc[row_indexer,col_indexer] = value

理想情况下,我希望解决此问题并了解正确的最佳做法是什么。我已经将问题定位到这一行代码:

region_filtered_data = data.loc[(data['region'] == region[:-1]) & (data['type'] == 'conventional')]

据我所知,问题的最常见原因是当您为数据框的某些部分重新分配值时,这不是我在这里所做的。我只是想将我的数据框过滤为仅那些“区域”列中的值与我指定的值匹配且“类型”是常规的记录。

【问题讨论】:

  • 嗨!在您的代码中 - region[:-1] - 什么是区域?是数据框还是列表?
  • @Ian 感谢您的回复,它是一个字符串,但它在最后返回一个空格,所以我正在解析那个空间。我想获取与字符串匹配的所有行。
  • 知道了,试试下面的代码。让我知道它是否有效。
  • 不幸的是,我正在使用一个名为 region 的字符串,以及数据框中的一个名为 region 的列。我想获取数据框“区域”列中的区域与字符串区域的值匹配的所有行。我正在使用 region[:-1] 将区域字符串从“Atlanta”之类的内容更改为“Atlanta”。所以我想检查区域列中的区域是否与区域字符串中的区域匹配。
  • 试试下面编辑的答案。

标签: python-3.x pandas dataframe filtering


【解决方案1】:

试试这个:

region_filtered_data = data.loc[(data['region'] == region) & (data['type'] == 'conventional')]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2021-12-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多