删除数据框列中的特定字符组合?
Remove specific combination of characters in dataframe colum?
我遇到以下问题,我有一些数据需要删除特定的字符组合,例如:
data_col
*.test1.934n
test1.tedsdh
*.test1.test.sdfsdf
jhsdakn
*.test2.test
我需要删除的是“*”存在的所有实例。数据框中的字符组合。到目前为止我已经尝试过:
df['data_col'].str.replace('^*.','')
然而,当我 运行 代码时,它给我这个错误:
re.error: 位置 1 无重复内容
关于如何解决这个问题有什么建议吗?提前致谢。
pandas 版本 1.4.2 或更早版本中 .str.replace
的默认行为是将替换模式视为正则表达式。如果您使用正则表达式来匹配具有特殊含义的字符,例如 *
和 .
您必须使用反斜杠对它们进行转义:
df['data_col'].str.replace(r'^\*\.', '', regex=True)
请注意,我使用 raw string literals 来确保反斜杠按原样处理。我还添加了 regex=True
,否则 pandas 会抱怨将来它不会将模式视为正则表达式。由于 ^
开头,此正则表达式将只匹配每个字符串的开头。
但是,在这种特殊情况下,您也可能根本不需要正则表达式。
如果您想删除字符串中 *.
的任何实例(不仅是开头的),您可以使用
df['data_col'].str.replace('*.', '', regex=False)
如果你只想删除字符串开头的 *.
实例,你可以使用 .removeprefix
代替:
df['data_col'].str.removeprefix('*.')
我遇到以下问题,我有一些数据需要删除特定的字符组合,例如:
data_col |
---|
*.test1.934n |
test1.tedsdh |
*.test1.test.sdfsdf |
jhsdakn |
*.test2.test |
我需要删除的是“*”存在的所有实例。数据框中的字符组合。到目前为止我已经尝试过:
df['data_col'].str.replace('^*.','')
然而,当我 运行 代码时,它给我这个错误:
re.error: 位置 1 无重复内容
关于如何解决这个问题有什么建议吗?提前致谢。
pandas 版本 1.4.2 或更早版本中 .str.replace
的默认行为是将替换模式视为正则表达式。如果您使用正则表达式来匹配具有特殊含义的字符,例如 *
和 .
您必须使用反斜杠对它们进行转义:
df['data_col'].str.replace(r'^\*\.', '', regex=True)
请注意,我使用 raw string literals 来确保反斜杠按原样处理。我还添加了 regex=True
,否则 pandas 会抱怨将来它不会将模式视为正则表达式。由于 ^
开头,此正则表达式将只匹配每个字符串的开头。
但是,在这种特殊情况下,您也可能根本不需要正则表达式。
如果您想删除字符串中 *.
的任何实例(不仅是开头的),您可以使用
df['data_col'].str.replace('*.', '', regex=False)
如果你只想删除字符串开头的 *.
实例,你可以使用 .removeprefix
代替:
df['data_col'].str.removeprefix('*.')