【问题标题】:Unable to subset the data from Pandas dataframe无法对 Pandas 数据框中的数据进行子集化
【发布时间】:2019-11-21 06:00:25
【问题描述】:

我尝试根据某些条件从 Pandas 数据框创建一个子集。我能够创建两个子集,但在尝试创建另一个子集时出现语法错误。

数据框是带有列标题的 .csv 文件:编号、环境、阶段、类型、计划结束日期、关闭代码、关闭子类别、变更引起的事件、待更改。我应该尝试使用“计划结束日期”创建子集的代码,其中计划结束日期比今天日期超过 4 天的记录应该在不同的子集中?我想创建一个包含所有“成功”和“完全成功”记录的不同子集,以及一个不同的子集,其中包含由更改引起的事件和待定更改的空值。

原始数据框:

子集错误:

没有子集错误:

【问题讨论】:

  • 你可以得到这样的子集:df.loc[:,['Successful','FULLY SUCCESSFUL']]
  • 请修正您帖子的格式,并将这些图片的内容作为文本包含在内。见:minimal reproducible example。至于你得到的错误:使用df[‘col_name’] 而不是df.col_name 来获取列。后者没有优点,只有缺点。

标签: python pandas dataframe datetime


【解决方案1】:

当您使用df2.Closure Subcategory == ... 格式时,python 仅使用 Closure 作为列名,并假定空格后面的所有内容都是语句的另一部分。因此,当它在dataframe 列之后单独看到“子类别”一词时,它会引发错误。

正如评论部分中提到的@Alexander Cecile,使用其他方法调用列,例如df2['Closure Subcategory'] == ...,将创建子集。

【讨论】:

  • @Alexander Cecile,尝试按照您提到的步骤进行操作。现在我得到了关键错误。 Code : - df4 = df3['Closure code' == 'Successful'] #我执行的代码正确吗?
  • @Alexander Cecile,尝试按照您提到的步骤进行操作。现在我得到了关键错误。代码: - df4 = df3['Closure code' == 'Successful'] #我是否正确执行了代码? KeyError:- 错误
  • @vinaykumar 不,你没有。您需要关闭列名后的“]”。
  • 谢谢它的工作....在子集之后还想要打印所有其他维度....它只提供布尔 dtype 输出。能指导一下吗
  • @vinaykumar 要获得满足条件的df3 的完整行,您需要执行df4 = df3[df3['Closure code'] == 'Successful'],这意味着给我df3 中的所有行,其中df3 在列中“关闭代码”的值为“成功”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2013-08-15
  • 2019-03-30
  • 2021-12-04
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多