删除以字母和两个数字开头的项目

2024-04-18 22:34:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我很好奇如何从一个以字母和两个数字开头并替换为NaN的DF中删除字符串条目

A        B         C          D
Apple    Pear      N45 82f    John 
Cat      P48 hH2   Mary       Sponge 
Hat      P67 De1   Bed        S90 GGGF

我想用一个字母和两个数字替换DF中所有以NaN开头的条目

我试过类似的方法

for columns in df.columns[1:]:
    for i in columns: 
        if i[0].isalpha() and i[1].isdigit and i.[2].isdigit():
            i.replace(i,None)

不幸的是,这似乎不起作用。任何帮助都将不胜感激


Tags: columnsand字符串inappledffor字母
2条回答

stackstr.extract用于一个模式,该模式与您想要匹配的模式不匹配(这样,它们就被nan替换)

df.stack().str.extract(r'(^[^a-z]\D{2}.*)').unstack()[0]

       A     B     C       D
0  Apple  Pear   NaN    John
1    Cat   NaN  Mary  Sponge
2    Hat   NaN   Bed     NaN

你可以试试这个:

df.mask(df.apply(lambda r: r.str.contains('[a-zA-Z]{1}\d{2}')))

输出:

       A     B     C       D
0  Apple  Pear   NaN    John
1    Cat   NaN  Mary  Sponge
2    Hat   NaN   Bed     NaN

我也喜欢“酷速”的堆栈:

df[~df.stack().str.contains('[a-zA-Z]{1}\d{2}').unstack()]

输出:

       A     B     C       D
0  Apple  Pear   NaN    John
1    Cat   NaN  Mary  Sponge
2    Hat   NaN   Bed     NaN

相关问题 更多 >