如果尾部句点作为数据帧列的最后一个非空格存在,则清除它



下面是我正在处理的数据示例(第一行是列名(:

DENOMINAZIONE;ATC;PRINCIPIO ATTIVO;TITOLARE;AIC    
ABASAGLAR;A10AE04;INSULINA GLARGINE;ELI LILLY NEDERLAND B.V.;043658
ABASRIA;A10AE04;INSULIN GLARGINE;ELI LILLY REGIONAL OPERATIONS GMBH.;043658
ABECMA;L01;IDECABTAGENE VICLEUCEL;CELGENE EUROPE BV;049604
ABEVMY;L01XC07;BEVACIZUMAB;MYLAN IRE HEALTHCARE LTD ;049452
ABILIFY MAINTENA;N05AX12;ARIPIPRAZOLE;OTSUKA PHARMACEUTICAL EUROPE LTD. ;043143
ABILIFY MAINTENA;N05AX12;ARIPIPRAZOLE;OTSUKA PHARMACEUTICAL EUROPE LTD;043143

我需要消除最后一个"。"使得例如最后两条线变得相同。我还需要考虑到,有时会有领先或落后的空白,可能不止一个。

CSV文件被读取到Pandas.DataFrame comp_df中,我在上面尝试了以下行:

comp_df.TITOLARE.str.replace(r".+.s*$", "", regex=True)

它的工作是匹配一个或多个非空白字符,后面跟着一个文字周期,后面跟着零或多个空格,直到到达行的末尾。

我的目标是减少TITOLARE系列中字符串的可变性。

问题是匹配的行被正确替换,但不匹配的行返回为空。

我该如何解决这个问题?

我无法重现为什么不匹配的行被返回为空,但如果您将示例数据加载为csv,将分隔符设置为;,并使用可选空白字符之间的s*.s*$仅匹配字符串末尾的点,则您将得到所需的替换,而不匹配的行将保持不变。

示例

import pandas as pd
comp_df = pd.read_csv("file.csv", sep=";")
comp_df.TITOLARE = comp_df.TITOLARE.str.replace(r"s*.s*$", "")
print(comp_df)

输出

DENOMINAZIONE      ATC        PRINCIPIO ATTIVO                            TITOLARE  AIC    
0         ABASAGLAR  A10AE04       INSULINA GLARGINE             ELI LILLY NEDERLAND B.V    43658
1           ABASRIA  A10AE04        INSULIN GLARGINE  ELI LILLY REGIONAL OPERATIONS GMBH    43658
2            ABECMA      L01  IDECABTAGENE VICLEUCEL                   CELGENE EUROPE BV    49604
3            ABEVMY  L01XC07             BEVACIZUMAB           MYLAN IRE HEALTHCARE LTD     49452
4  ABILIFY MAINTENA  N05AX12            ARIPIPRAZOLE    OTSUKA PHARMACEUTICAL EUROPE LTD    43143
5  ABILIFY MAINTENA  N05AX12            ARIPIPRAZOLE    OTSUKA PHARMACEUTICAL EUROPE LTD    43143