所以,假设我有一个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')
答案 0 :(得分:4)
我认为您需要boolean indexing
或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
答案 1 :(得分:3)
如果您不想保留数据框的原始形状(布尔索引),这是一种方法:
dfBigObject = dfObject[dfObject ['C'] == 'big']