【问题标题】:Remove specific characters from rows in specific column从特定列中的行中删除特定字符
【发布时间】:2021-08-27 09:27:11
【问题描述】:

这是初学者的问题。 我尝试删除连字符和personalnumber 列中personalnumber 的前两个字符。连字符仍然存在于我的 df 中,并且我收到一条错误消息,表示我正在尝试使用正则表达式进行替换(见图)。

这是一个 12 位编号的个人号码,我想在其中删除“19”年。

我在想这可能是因为我的 dtype 是对象,我试图将其更改为字符串,但这也不适用——即使我没有收到语法错误,就像在连字符的情况下一样。要将对象更改为我使用的字符串:

app_df_new.astype({'personalnumber': str}).dtypes

当我在正则表达式中添加缺少的 '\ 时,它会给我以下错误消息:

【问题讨论】:

  • 当你谈论你模糊的数据时它不是很有帮助
  • 对不起,因为它是 SSN 的。但重要的是其中一种个人号码格式是:YYMMDD-XXXX。我正在尝试去掉 [70] 中的连字符。在数据集的其余部分,格式是 YYYYMMDDXXXX,在 [71] 中我试图去掉前两个字符。结果将是 YYMMDDXXXX。
  • 你可以显示示例数据 man
  • 吸取教训! :)
  • 如果你觉得我的回答有帮助,可以采纳

标签: python lambda str-replace


【解决方案1】:

错误可能是由于正则表达式缺少单引号'

您在右括号前缺少' 引号。

app_df_new['personalnumber'] = app_df_new['personalnumber'].str.replace(r'\^.{1,2}')

【讨论】:

    【解决方案2】:

    你忘记了单引号:

    app_df_new['personalnumber'] = app_df_new['personalnumber'].str.replace(r'\^.{1,2}','')
    

    【讨论】:

    • 啊,谢谢。当我修复它时,我收到了这个错误消息。不知道我是否理解。是不是它不理解我的正则表达式:TypeError: replace() missing 1 required positional argument: 'repl' ?
    • 什么错误信息?该错误消息是因为您在表达式中遗漏了一个 '
    • 我添加了另一张图片。第一条错误消息是“扫描字符串文字时 EOL”。当我添加 r'\ 时,它给了我消息“replace() 缺少 1 个必需的位置参数:'repl'”
    • @SevgiCamuz Replace 接受两个参数,我现在更改了答案。
    • 非常感谢!奇怪的是,我没有进行替换或 lstrip 来“粘贴”我的 df。你知道它是否可能是因为它是对象而不是字符串。?我也试过:app_df_new = app_df_new['personalnumber'] = app_df_new.personalnumber[2:]。那也没用
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多