Reputation: 867
So, let's say I have a pandas dataframe dfObject
, say:
A B C
1 red square big
2 green circle small
3 blue triangle big
I am now trying to make another dataframe dfBigObject
To do this, I want to choose only those rows from the dataframe which have big in the C column
So, dfBigObject
should look like:
A B C
1 red square big
2 blue triangle big
I try to use df.where
to do this but am unsuccessful.
This is what I am doing:
dfBigObject = dfObject.where(dfObject.C == 'big')
However, this is returned:
A B C
1 red square big
2
3 blue triangle big
What can I do?
Code to create dataframe:
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')
Upvotes: 2
Views: 87
Reputation: 7038
Here's one way if you aren't trying to preserve the original shape of the dataframe (boolean indexing):
dfBigObject = dfObject[dfObject ['C'] == 'big']
Upvotes: 3
Reputation: 862641
I think you need boolean indexing
or query
:
dfBigObject = dfObject[dfObject['C'] == 'big']
print (dfBigObject)
A B C
1 red square big
3 blue triangle big
Or:
dfBigObject = dfObject.query("C == 'big'")
print (dfBigObject)
A B C
1 red square big
3 blue triangle big
Upvotes: 4