如何用单次re.sub处理pandas列中的0.0(nan)与0(nan)格式?
统一转换Pandas列中两种格式的数值为0
我的Pandas数据列里存在0.0(nan)和0(nan)两种格式的数据,希望将它们统一转换为0。
原实现代码
import pandas as pd import re df = pd.DataFrame.from_dict({'col1': ['0.0(nan)','0(nan)']}) df['col2'] = df['col1'].astype(str).apply(lambda x: re.sub('(.*?)\\(nan\\)', '\\\\1', re.sub('(.*?)\\.0*\\(nan\\)', '\\\\1', x))) print(df)
执行输出
col1 col2 0 0.0(nan) 0 1 0(nan) 0
由于不清楚如何用正则同时处理括号前的.0或无小数的格式,我嵌套使用了两次re.sub。想请教:如何用单次re.sub实现该需求?或者有没有其他可行方法?
编辑: 根据@mozway的建议,修改后的代码如下:
df['col2'] = df['col1'].astype(str).apply(lambda x: re.sub('(.*?)(?:\\.0)?\\(nan\\)', '\\\\1', x))
内容的提问来源于stack exchange,提问作者warem
相关产品推荐
相关产品推荐

