【问题标题】:Remove unwanted str in Pandas dataframe删除 Pandas 数据框中不需要的 str
【发布时间】:2021-07-27 13:49:18
【问题描述】:

'我正在使用 panda read_csv 读取一个包含数据的 csv 文件,

Id;LibId;1;mod;modId;28;Index=10, Step=0, data=d720983f0000c0bf0000000014ae47bf0fe7c23ad1de3039;
Id;LibId;1;mod;modId;4;f9e9003e;
.
.
.
. 

在最后一列中,我想删除Index、Step、data=并希望保留十六进制值部分。

我创建了一个包含不需要的值的列表并使用了正则表达式,但似乎没有任何效果。

to_remove = ['Index','Step','data=']
rex = '[' + re.escape (''. join (to_remove )) + ']'
output_csv['Column_name'].str.replace(rex , '', regex=True)

【问题讨论】:

  • 尝试to_remove = ['Index','Step','data='],然后尝试output_csv['Column_name'] = output_csv['Column_name'].str.replace('|'.join([re.escape(x) for x in to_remove]), '', regex=True)
  • 很有魅力,非常感谢

标签: python regex pandas


【解决方案1】:

我建议你修复你的代码使用

to_remove = ['Index','Step','data=']
output_csv['Column_name'] = output_csv['Column_name'].str.replace('|'.join([re.escape(x) for x in to_remove]), '', regex=True)

'|'.join([re.escape(x) for x in to_remove]) 部分将创建一个类似Index|Step|data\= 的正则表达式,并将匹配任何to_remove 子字符串。

【讨论】:

    【解决方案2】:

    输入(添加列名供参考,可以避免):

    col1;col2;col3;col4;col5;col6;col7
    Id;LibId;1;mod;modId;28;Index=10, Step=0, data=d720983f0000c0bf0000000014ae47bf0fe7c23ad1de3039
    Id;LibId;1;mod;modId;28;Index=10, Step=0, data=d7203ad1de3039
    Id;LibId;1;mod;modId;28;Index=10, Step=0, data=d720e47bf0fe7c23ad1de3039
    

    代码:

    import pandas as pd
    
    df = pd.read_csv(r"check.csv", sep=";")
    df["col7"].replace(regex=True, to_replace="(Index=)(.*)(data=)", value="", inplace=True)
    

    这将只从“数据”部分提取十六进制值并删除其他所有内容。不要忘记inplace=True

    【讨论】:

      猜你喜欢
      • 2022-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2018-05-22
      • 2017-01-03
      • 2022-07-19
      相关资源
      最近更新 更多