gpt4 book ai didi

python - 更改数据框列中空格后的最后一个字

转载 作者:行者123 更新时间:2023-12-02 16:14:49 25 4
gpt4 key购买 nike

我正在处理包含计算机名称的数据框,并且我正在尝试匿名化计算机名称。这是数据框的示例,我正在使用

df = pd.DataFrame({'id': [1, 2, 3, 4, 5], 'computer_name': [u'LENOVO 09 X32H0GB', u'LENOVO vmhsbpmh613.xyz.biz', u'Dell Inc. PowerEdge R910 XKF2S75', u'HP  ppesfesxb203.corp.123.com', 'IBM SoftLayer 13 L89P4567']})

这是匿名化所需要的。

  1. 在 RIGHT 中的第一个 SPACE 之后,从 RIGHT 中选择第一组字符串 ..例如:对于“LENOVO vmhsbpmh613.xyz.biz”,它将是“vmhsbpmh613.xyz.biz”

  2. 从右侧获取第一组字符串后,例如“vmhsbpmh613.xyz.biz”,删除第一个点 (.) 中的所有字符,这将给出“vmhsbpmh613”,如果没有点(. ) 然后仅保留最后一组字符串,请注意仅从 RIGHT 的第一组字符串中删除点 (.) 之后的字符串很重要,否则会像本例中的“Dell Inc. PowerEdge R910 XKF2S75”在删除点“Dell Inc.”之后的所有内容

  3. 最后将前3个字符替换为xxx,如xxxsbpmh613

输出应该是这样的

df = pd.DataFrame({'id': [1, 2, 3, 4, 5], 'computer_name': [u'LENOVO 09 xxxH0GB', u'LENOVO xxxsbpmh613', u'Dell Inc. PowerEdge R910 xxx2S75', u'HP  xxxsfesxb203', 'IBM SoftLayer 13 xxxP4567']})

我希望,我能够清楚地表达需求,谢谢。

最佳答案

Series.str.replace

df['computer_name'].str.replace(r'\S{3}(\S+?)(?:\.\S+|$)', r'xxx\1')

0                   LENOVO 09 xxxH0GB
1 LENOVO xxxsbpmh613
2 Dell Inc. PowerEdge R910 xxx2S75
3 HP xxxsfesxb203
4 IBM SoftLayer 13 xxxP4567
Name: computer_name, dtype: object

正则表达式详细信息

  • \S{3} :完全匹配任何非空白字符 3 次。
  • (\S+?) :捕获组匹配任何非空白字符 1 到无限次,但次数尽可能少(惰性匹配)
  • (?: : 非捕获组的开始
  • \. :匹配 . 字符
  • \S+ : 计算任何非空白字符
  • $ : 在行尾断言位置
  • ) : 非捕获组结束

查看 regex demo

关于python - 更改数据框列中空格后的最后一个字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67041984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com