无需创建新列,基于Pandas字符串列按数值筛选
解决方案
要在不修改原DataFrame的前提下,按Category列后两位的数值筛选子集,你可以用以下两种高效的向量化方法:
方法1:使用pd.to_numeric转换
import pandas as pd df_subset = df[pd.to_numeric(df['Category'].str[2:]) <= 3]
方法2:使用.astype(int)转换
df_subset = df[df['Category'].str[2:].astype(int) <= 3]
为什么你的第二种写法不生效?
int(df['Category'].str[2:4])这种写法错误,因为df['Category'].str[2:4]返回的是Pandas Series对象,无法直接用Python内置的int()批量转换,必须用Pandas提供的向量化方法处理整个Series。
效果说明
两种方法都会生成布尔索引数组,用来筛选原DataFrame中符合条件的行,完全不会修改原DataFrame,最终得到的df_subset会包含AB00、CD01、EF02、GH03这些行。
内容的提问来源于stack exchange,提问作者PSt
相关产品推荐
相关产品推荐

