我怎样才能使用 pandas 数据框,这样我只得到真正的行,如果条件不正确,我什么也得不到

How can I use pandas dataframe where such that I get only the true rows and don't get anything if the condition is not true

所以,假设我有一个 pandas 数据框 dfObject ,比如说:

     A     B         C
1   red   square    big
2   green circle    small
3   blue  triangle  big

我现在正在尝试制作另一个数据框dfBigObject 为此,我只想从数据框中选择那些在 C 列中有大的行

所以,dfBigObject 应该是这样的:

    A     B         C
1   red   square   big
2   blue  triangle big

我尝试使用 df.where 来执行此操作但未成功。

这就是我正在做的事情:

dfBigObject = dfObject.where(dfObject.C == 'big')

然而,这是返回:

     A     B         C
1   red   square    big
2    
3   blue  triangle  big

我能做什么?

创建数据框的代码:

dfObject = pd.DataFrame()
dfObject.set_value(1, 'A', 'red')
dfObject.set_value(1, 'B', 'square')
dfObject.set_value(1, 'C', 'big')
dfObject.set_value(2, 'A', 'green')
dfObject.set_value(2, 'B', 'circle')
dfObject.set_value(2, 'C', 'small')
dfObject.set_value(3, 'A', 'blue')
dfObject.set_value(3, 'B', 'triangle')
dfObject.set_value(3, 'C', 'big')

我认为你需要boolean indexing or query:

dfBigObject = dfObject[dfObject['C'] == 'big']
print (dfBigObject)
      A         B    C
1   red    square  big
3  blue  triangle  big

或者:

dfBigObject = dfObject.query("C == 'big'")
print (dfBigObject)
      A         B    C
1   red    square  big
3  blue  triangle  big

如果您不想保留数据框的原始形状(布尔索引),可以使用以下一种方法:

dfBigObject = dfObject[dfObject ['C'] == 'big']