我怎样才能使用pandas数据帧,这样我只得到真正的行,如果条件不正确则不会得到任何东西

时间:2017-05-22 13:11:29

标签: python pandas dataframe where

所以,假设我有一个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')

2 个答案:

答案 0 :(得分:4)

我认为您需要boolean indexingquery

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

答案 1 :(得分:3)

如果您不想保留数据框的原始形状(布尔索引),这是一种方法:

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