【问题标题】:pandas remove duplicates from a cell熊猫从单元格中删除重复项
【发布时间】:2020-11-07 04:44:34
【问题描述】:

我需要删除单元格中的重复数字重复 单元格中的百分比符号

我有两个输入:

输入1-

  1. 51 %
  2. 4% %
  3. (0.9 %)
  4. 53 %
  5. 44 %
  6. 29 %

名称:付费损失率,dtype:对象

要求的输出1

  1. 51
  2. 4
  3. -0.9
  4. 53
  5. 44
  6. 29

名称:付费损失率,dtype:对象

以下脚本适用于这种情况:

f1['付费损失率'].str.split('%').apply(set).str.join('').str.rstrip()

尝试删除重复的“% 登录一个单元格”

输入2 -

  1.   88 % 
    
  2.  102 % 
    
  3. 84 84 %
  4.   ( 0.8 %
    
  5.   93 % 
    

名称:Constant Loss Ratio,数据类型:object

要求输出2

  1. 88 %
  2. 102%
  3. 84 %
  4. -0.8%
  5. 93 %

尝试以下方法但无法正常工作:

re.sub(r'([0-9])(.*)\1+', r'\1', str(ab))

尝试删除一个单元格中重复的“84”数字

还有没有办法合并这两个脚本/模式?

【问题讨论】:

  • df['col'].replace('%+','',regex=True).astype(float) 有什么问题?
  • @Manakin 这个也可以,所以我将这两个答案结合起来。谢谢! :)
  • @Manakin 我已经稍微更新了这个问题,如果我们有 -0.8% 或 -0.9% 之类的“括号”,你能看看你是否可以提供帮助
  • 应该这样做df[0].replace('%+','',regex=True).str.strip('()').astype(float)

标签: python regex pandas


【解决方案1】:

您对第一个输入的要求与输出不匹配,因为您似乎只想删除双百分号?如果我是正确的,我认为您可以使用:

(\S+)(?=\s\1)\s

在线查看demo


示例 Python 脚本可以是:

df = df.replace(r'(\S+)(?=\s\1)\s','', regex=True)

打印:

0    51 %
1     4 %
2     9 %
3    53 %
4    44 %
5    29 %
6    88 %
7   102 %
8    84 %
9     Nan
10   93 %

【讨论】:

  • 我已经稍微更新了问题并添加了一个括号数据,你能看看有什么可以做的吗?..我需要删除大括号并在它前面添加一个负号.... 像 -0.8% 代替 (0.8 % 或 -0.9 代替 (0.9 %)
  • @karan,事后改变你的问题真的不是一个好主意。欢迎您提出许多问题(只要它们是好问题)。我想现在你可以使用两个替代品?也许先使用:df = df.replace(r'\(([^)]*)\)', r'-\1', regex=True),然后是答案中的建议?
猜你喜欢
  • 2019-11-13
  • 2019-04-12
  • 2019-11-05
  • 2016-09-03
  • 1970-01-01
  • 2017-03-03
  • 2023-03-31
  • 2016-01-30
  • 2015-03-11
相关资源
最近更新 更多