从熊猫的弦中删除多余的标点符号

时间:2018-12-19 05:42:28

标签: python string pandas

嗨,我有一个如下数据框

df1:-

rade   volume    packitt 
wear   28        cult,,daok
kwat   45        vaner ,boera
itre   17        eaker, ewlvwe, The wrerin
reww   87     
hakw   57        ,rabe,,boera
kryh   45        vaner ,boera,vanya,

现在我要删除多余的逗号

输出数据框

rade   volume    packitt 
wear   28        cult,daok
kwat   45        vaner,boera
itre   17        eaker,ewlvwe,The wrerin
reww   87 
hakw   57        rabe,boera
kryh   45        vaner,boera,vanya

1 个答案:

答案 0 :(得分:2)

这很可能是由于字符串的不正确的按列聚合引起的(您是要执行df.agg(lambda x: ','.join(x.dropna()), axis=1)之类的操作吗?)。

不过,作为参考,您可以使用涉及str.splitstr.join的非正则表达式解决方案来删除逗号:

df['packitt'] = [
    ','.join(filter(None, x.split(','))) if pd.notna(x) else x 
    for x in df['packitt']
]

df
   rade  volume                    packitt
0  wear      28                  cult,daok
1  kwat      45               vaner ,boera
2  itre      17  eaker, ewlvwe, The wrerin
3  reww      87                       None
4  hakw      57                 rabe,boera
5  kryh      45         vaner ,boera,vanya

或者,使用熊猫列字符串操作str.replace(使用正则表达式)+ str.strip

df['packitt'] = df.packitt.str.replace(r'(\s*,\s*)+', ',').str.strip(',')

df
   rade  volume                  packitt
0  wear      28                cult,daok
1  kwat      45              vaner,boera
2  itre      17  eaker,ewlvwe,The wrerin
3  reww      87                     None
4  hakw      57               rabe,boera
5  kryh      45        vaner,boera,vanya

r'(\s*,\s*)+'将匹配由0或多个空格包围的1个或多个逗号。