简体   繁体   中英

Drop row in pandas if it contains condition

I am trying to drop rows in pandas based on whether or not it contains "/" in the cells in column "Price". I have referred to the question: Drop rows in pandas if they contains "???".

As such, I have tried both codes:

df = df[~df["Price"].str.contains('/')]

and

df = df[~df["Price"].str.contains('/',regex=False)]

However, both codes give the error: AttributeError: Can only use.str accessor with string values!

For reference, the first few rows of my dataframe is as follows:

    Fruit   Price
0   Apple     3
1   Apple    2/3
2   Banana    2
3   Orange   6/7

May I know what went wrong and how can I fix this problem? Thank you very much!

Try this:

df = df[~df['Price'].astype(str).str.contains('/')]
print(df)

    Fruit Price
0   Apple     3
2  Banana     2

You need to convert the price column to string first and then apply this operation. I believe that price column doesn't have datatype string

df['Price'] = df['Price'].astype(str)

and then try

df = df[~df["Price"].str.contains('/',regex=False)]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM