相关疑难解决方法(0)

在不删除行的情况下过滤Pandas DataFrame

我正在尝试where在我的Pandas DataFrame上使用替换所有不符合我标准的单元格NaN.但是,我想以这样的方式执行此操作,始终保留原始DataFrame的形状,而不是从生成的DataFrame中删除任何行.

给定以下DataFrame:

      A    B    C    D
1/1   0    1    0    1
1/2   2    1    1    1
1/3   3    0    1    0 
1/4   1    0    1    2
1/5   1    0    1    1
1/6   2    0    2    1
1/7   3    5    2    3
Run Code Online (Sandbox Code Playgroud)

当列DALSO满足特定条件时,我想在数据帧中搜索满足特定条件的所有单元格.在这种情况下,我的标准是:

当列D也> 1时,查找大于先前值的所有单元格

我通过使用以下语法完成此任务:

matches = df[df > df.shift(1))]
matches = matches[df.D > 1]
Run Code Online (Sandbox Code Playgroud)

我必须将此查询拆分为两个语句,因为它df.D是一个Series并且与整个DataFrame的形状不匹配.根据我之前提出的这个问题,&直到0.14才能获得对广播运营商的支持.

我遇到的问题是,似乎在我运行第二个语句后,结果数据框的形状发生了变化,行已被删除.列数保持不变.第一个语句保留原始行数.

为什么第二个语句删除行而第一个语句没有?我怎样才能获得相同的结果,但保留完整的行数?

编辑:

pandas文档声明为了保证形状被保留,我应该使用where方法而不是布尔索引.但是,似乎不允许执行我的第二个声明,因此:

matches.where(df.D > 1)
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

ValueError:数组条件必须与self相同

python numpy dataframe pandas

5
推荐指数
1
解决办法
5036
查看次数

标签 统计

dataframe ×1

numpy ×1

pandas ×1

python ×1