我怎样才能使用 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']
所以,假设我有一个 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']