我将尝试选择 pandas DataFrame 中所有符合某个条件的单元格,同时这些单元格所在的特定列也要满足另一个条件。
给定以下 DataFrame:
然而,当我这样做时,我收到以下错误:
TypeError: Could not operate [array([nan, nan, nan, nan], dtype=object)] with block values [operands could not be broadcast together with shapes (2016) (4)]
注意:该错误是从我的实际代码直接复制粘贴的,因此错误中的描述和形状与我的示例DataFrame不直接相关。
我知道df.D>1是问题的原因,并且直接将列与D进行比较是有效的(例如,df>df.D)。在尝试将D与值1进行比较时,我的语法有什么问题,我应该如何完成此操作?
给定以下 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: Could not operate [array([nan, nan, nan, nan], dtype=object)] with block values [operands could not be broadcast together with shapes (2016) (4)]
注意:该错误是从我的实际代码直接复制粘贴的,因此错误中的描述和形状与我的示例DataFrame不直接相关。
我知道df.D>1是问题的原因,并且直接将列与D进行比较是有效的(例如,df>df.D)。在尝试将D与值1进行比较时,我的语法有什么问题,我应该如何完成此操作?
df[df > df.shift(1)][df.D > 1]
会发生什么?这样做能实现你想要的效果吗? - EdChum