У меня есть фрейм данных, где у нас есть размер людей в американской нотации, и я хочу заменить эти значения в сантиметрах на регулярное выражение (или другое ...)
#approximation
def conversion(one, two):
print(one)
return (int(one)*30 + float(int(two)*2.5))
df_test = df_dummies
df_test['Height'] = df_test['Height'].replace({r'(\w+)\+(\w+)' : conversion( r'\1' , r'\2' )}, regex=True).astype(float)
Я пробовал этоно соответствующие группы не работают
ошибка:
---------------------------------------------------------------------------
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'
, но если я делаю это:
#approximation
def conversion(one, two):
print(one)
return (int(one)*30 + float(int(two)*2.5))
df_test = df_dummies
df_test['Height'] = df_test['Height'].replace({r'(\w+)\+(\w+)' : r'\1' +r'\2' }, regex=True).astype(float)
Это работает нормально, и я получил объединение 2 соответствующихgroups
Есть ли решение для получения результата преобразования (один, два) в качестве замены в кадре данных?