嗨,我有一个如下数据框
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
答案 0 :(得分:2)
这很可能是由于字符串的不正确的按列聚合引起的(您是要执行df.agg(lambda x: ','.join(x.dropna()), axis=1)
之类的操作吗?)。
不过,作为参考,您可以使用涉及str.split
和str.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个或多个逗号。