简体   繁体   中英

Pandas filter dataframe off sliced value

I have the following dataframe

names        brand
A7           Audi
TrailBlazer  Chevy
RS8          Audi
Tahoe        Chevy
Corvette     Chevy
GL450        Mercedes

I would like to filter the df off of a slice of the names column. I want to use the last character of the value. If the the last character is a digit I want to 'ignore' that and return only the other results.

I am trying this.

new_df = df[(df['names'] == (lambda x: x['names'].str[-1]).isdigit())]

When I do this it returns a empty dataframe.

I would expect to return this.

names       brand
TrailBlazer Chevy
Tahoe       Chevy
Corvette    Chevy

You can use str[-1] to access the last character of the strings, and use str.isdigit() to test the condition:

df[~df.names.str[-1].str.isdigit()]
#         names   brand
#1  TrailBlazer   Chevy
#3        Tahoe   Chevy
#4     Corvette   Chevy

Or more safely, in case you have numeric values in the names column:

df[~df.names.astype(str).str[-1].str.isdigit()]

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