我有列值的数据帧-
[Themangoescosts$1K]
[needtopay20K,10Kdollarsmakesagrand]我需要转换K-10^3
我不确定如何使用regex选项替换数据帧列中列表的匹配值。
用下面的正则表达式来识别K&M案件-
match = re.search("[\d.]+[KM]+", row)并计划使用以下物品以取代-
mp = {'K':' * 10**3', 'M':' * 10**6'}
df2['c'] = pd.eval(df2.offer2.replace(mp.keys(), mp.values(), regex=True).str.replace(r'[\d.]+[KM]+',''))会导致错误-
UndefinedVariableError: name 'nan' is not defined预期产出-
[Themangoescosts$1000]
[needtopay20000,10000dollarsmakesagrand]发布于 2019-05-24 20:38:11
我建议用
df['c'] = df['offer2'].str.replace(r'(?<!\d)(\d{1,3})([KM])', lambda x: '{}000'.format(x.group(1)) if x.group(2) == 'K' else '{}000000'.format(x.group(1)) )要点是,在使用Series.str.replace时,您可以使用一个可调用的替换参数。
Regex描述
(?<!\d) -当前位置左侧不允许任何数字(\d{1,3}) -第一组:一到三位数([KM]) -第2组:L或M。如果组2值为lambda x: '{}000'.format(x.group(1)) if x.group(2) == 'K' else '{}000000'.format(x.group(1)),则替换组1+ 000,否则使用附加000000的组1。
https://stackoverflow.com/questions/56134319
复制相似问题