Pandas 过滤数据帧切片值

Pandas filter dataframe off sliced value

我有以下数据框

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

我想从 names 列的一部分中过滤掉 df。我想使用值的最后一个字符。如果最后一个字符是一个数字,我想 'ignore' 和 return 只有其他结果。

我正在尝试这个。

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

当我这样做时,它 return 是一个空数据框。

我希望 return 这个。

names       brand
TrailBlazer Chevy
Tahoe       Chevy
Corvette    Chevy

您可以使用str[-1]访问字符串的最后一个字符,并使用str.isdigit()测试条件:

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

或者更安全,如果您在 names 列中有数值:

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