Python 将匹配组用作函数中的参数

Python 将匹配组用作函数中的参数,python,regex,pandas,dataframe,Python,Regex,Pandas,Dataframe,我有一个数据框,其中我们有美国人表示的人的大小,我想用正则表达式(或其他…)替换这些厘米值 我已经试过了,但是匹配组不起作用 错误: --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-189-d4278403d

我有一个数据框,其中我们有美国人表示的人的大小,我想用正则表达式(或其他…)替换这些厘米值

我已经试过了,但是匹配组不起作用

错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-189-d4278403d30f> in <module>
      5 
      6 df_test = df_dummies
----> 7 df_test['Height'] = df_test['Height'].replace({r'(\w+)\+(\w+)' : conversion( r'\1' , r'\2' )}, regex=True).astype(float)
      8 df_test.head().transpose()

<ipython-input-189-d4278403d30f> in conversion(one, two)
      2 def conversion(one, two):
      3     print(one)
----> 4     return (int(one)*30 + float(int(two)*2.5))
      5 
      6 df_test = df_dummies

ValueError: invalid literal for int() with base 10: '\\1'
它工作得很好,我得到了两个匹配组的连接

是否有一种解决方案可以将结果转换为数据帧中的替换(一、二)?

使用支持回调作为替换

def conversion(m): 
    return str(int(m.group(1))*30 + float(int(m.group(2))*2.5))

df_test['Height'] = df_test['Height'].str.replace(r'(\d+)\+(\d+)', conversion).astype(float)
回调函数接受一个参数,即正则表达式匹配对象。您需要返回一个字符串作为替换。

使用支持回调作为替换的字符串

def conversion(m): 
    return str(int(m.group(1))*30 + float(int(m.group(2))*2.5))

df_test['Height'] = df_test['Height'].str.replace(r'(\d+)\+(\d+)', conversion).astype(float)

回调函数接受一个参数,即正则表达式匹配对象。您需要返回一个字符串作为替换。

您能提供一些示例数据和预期输出吗?您的字符串可能包含导致转换错误的
'
字符。您能提供一些示例数据和预期输出吗?您的字符串可能包含
'
导致转换错误的字符。哇!非常出色,谢谢你的帮助,因为你猜我是python的初学者,我不太了解回调机制……谢谢你的帮助!哇!非常出色,谢谢你的帮助,因为你猜我是python的初学者,我不太了解回调机制……谢谢你的帮助!
def conversion(m): 
    return str(int(m.group(1))*30 + float(int(m.group(2))*2.5))

df_test['Height'] = df_test['Height'].str.replace(r'(\d+)\+(\d+)', conversion).astype(float)