从中的列中删除可选字符

2024-09-29 02:15:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列,其中可能包含abc,defabc,def,efg,ab,12,34,等值。正如您所看到的,有些值以,结尾,有些值不以,结尾。我想做的是删除所有以逗号结尾的值

假设加载了数据并创建了数据帧。这就是我要做的

df[c] = df[c].astype('unicode').str.replace("/,*$/", '').str.strip()

但它什么也没用

我做错了什么


Tags: 数据dfabdef结尾unicodereplacestrip
2条回答

您的正则表达式错误,因为它包含正则表达式分隔符字符。Python正则表达式使用普通字符串,而不是正则表达式文本

使用

df[c] = df[c].astype('unicode').str.replace(",+$", '').str.strip()

,+$将匹配字符串末尾的一个或多个逗号

proof

另见Regular expression works on regex101.com, but not on prod

你尝试的方式是这样的:

df[c] = df[c].str.rstrip(',')

rstrip(',')将删除字符串末尾的逗号

strip(',')将从起始和结束位置将其删除

以上内容将取代文本。它不允许您从数据帧中删除行。因此,您应该执行以下操作:

使用^{}:

df[~df['col'].str.endswith(',')]

考虑下面的DF:

In [1547]: df
Out[1547]: 
         date id  value  rolling_mean   col
0  2016-08-28  A      1           nan    a,
1  2016-08-28  B      1           nan    b
2  2016-08-29  C      2           nan    c,
3  2016-09-02  B      0          0.50    d
4  2016-09-03  A      3          2.00    ee,ff
5  2016-09-06  C      1          1.50    gg,
6  2017-01-15  B      2          1.00    i,
7  2017-01-18  C      3          2.00    j
8  2017-01-18  A      2          2.50    k,

In [1548]: df = df[~df['col'].str.endswith(',')]    
In [1549]: df                               
Out[1549]: 
         date id  value  rolling_mean    col
1  2016-08-28  B      1           nan      b
3  2016-09-02  B      0          0.50      d
4  2016-09-03  A      3          2.00  ee,ff
7  2017-01-18  C      3          2.00      j

相关问题 更多 >