无法在CSV的所有列上应用正则表达式

时间:2018-08-21 09:50:46

标签: python regex pandas

Input : T1_col1 T2_col2 MANDT   BUKRS   LIFNR
           NULL         900     1100    1000000010
           NULL         900     1100    1000000044

Columns: T1_col1, T2_col2, MANDT, BUKRS, LIFNR

Output:             T1_col1 T2_col2 MANDT   BUKRS   LIFNR
                0                     900   1100    DDDDDDDDDD
                1                     900   1100    DDDDDDDDDD


Code:
df = pd.read_csv(filename)
df = df.replace('[A-Za-z]','N', regex=True).replace('\d','D', regex=True)
df.to_csv('Output.csv')

可以看出,名为MANDT,BUKRS的列没有被替换。我希望所有列都被更改。

1 个答案:

答案 0 :(得分:0)

我不知道您使用的是哪个版本的python,我的替换中没有regex选项。尽管如此,这应该起作用:

df.apply(lambda x: x.astype(str).str.replace('[A-Za-z]','N').str.replace('\d','D'))

我的猜测是,您的某些列不是格式化为字符串而是数字格式,因此无法在其上进行替换。