繁体   English   中英

截断字符串并用“X”替换

[英]Truncate string and replace with "X" Python Pandas DataFrame

我有一个df,例如:

d = {'col1': [11111111, 2222222]]}
df = pd.DataFrame(data=d)
df
   col1  
0     11111111     
1     2222222

我需要删除前四个字符之前的所有内容并替换为“X”之类的内容,这样新的 df 将是

d = {'col1': [XXXX1111, XXX2222]]}
df = pd.DataFrame(data=d)
df
   col1  
0     XXXX1111     
1     XXX2222

python 的新手仍然可以分割最后四个字符。 但是无法用 X 替换其他所有内容。

此外,字符串可以是不同的长度。 所以 X 的数量取决于字符串的长度。 这尤其给我带来了麻烦。 如果它们的长度都相同,这将容易得多。

您可以将.str.replace()与正则表达式一起使用:

df.col1 = df.col1.astype(str).str.replace(
    r"^(.*)(.{4})$", lambda g: "X" * len(g.group(1)) + g.group(2)
)

print(df)

印刷:

       col1
0  XXXX1111
1   XXX2222
df['col1'] = list(map(lambda l: 'X'*(l-4), df['col1'].astype(str).apply(len))) + df['col1'].astype(str).str[-4:]
  • map()是重复X n-4次,其中ncol1中每个元素的长度。

  • .str[-4:]是获取col1列的最后 4 个字符

# print(df)

       col1
0  XXXX1111
1   XXX2222

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM