【发布时间】:2013-10-21 00:03:03
【问题描述】:
当特定列也满足单独的条件时,我正在尝试选择 pandas 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
当D 也> 1 时,我想以某种方式选择列大于其先前值的数据。我当前尝试使用的语法是:
matches = df[(df > df.shift(1)) & (df.D > 1)]
但是,当我这样做时,我收到以下错误:
TypeError: 无法操作 [array([nan, nan, nan, nan], dtype=object)] 具有块值 [无法广播操作数 连同形状 (2016) (4) ]
注意:错误是我的实际代码的直接复制和过去,因此错误中的描述和形状不会直接与我的示例 DataFrame 相关。
我知道df.D > 1 导致了问题,直接将列与D 进行比较是有效的(例如df > df.D)。尝试将 D 与值 1 进行比较时,我的语法有什么问题,我该如何做到这一点?
【问题讨论】:
-
当您尝试
df[df > df.shift(1)][df.D > 1]时会发生什么?这能达到你想要的吗?