如何删除DataFrame中sku列包含英文字母的对应行
解决方案
你目前写的两行空值过滤代码是等价的,pandas中isnull()和isna()功能完全一致,可以合并为一行简化写法:
df = df[df['sku'].notna()]
根据你的需求,删除含字母的sku对应行可以按两种场景选择实现方式:
场景1:仅保留纯数字组成的sku行(仅保留0001、0002这类全数字取值,排除所有含非数字字符的行)
先将sku列统一转为字符串格式,避免数值型sku丢失前置0的问题,再用正则匹配纯数字规则:
# 统一转为字符串格式,保留sku的前置0特征 df['sku'] = df['sku'].astype(str) # 筛选仅由数字组成的sku行 df = df[df['sku'].str.match(r'^\d+$')]
场景2:仅排除含英文字母的sku行(允许sku包含数字外的其他符号,如横杠、井号、下划线等)
直接用正则匹配所有大小写英文字母,取反过滤即可:
df = df[~df['sku'].str.contains(r'[a-zA-Z]', na=False)]
参数na=False是为了避免未过滤干净的空值导致报错,如果你已经提前完成空值过滤可以省略该参数。
内容的提问来源于stack exchange,提问作者user16628047
相关产品推荐
相关产品推荐

