Как преобразовать футы и дюймы в формате дроби в десятичную? - PullRequest
2 голосов
/ 06 мая 2019

Я работаю с фреймом данных, который импортировал через панд.У меня есть столбец, который содержит значения длины в футах и ​​дюймах, отформатированные в виде дроби.

Я хотел бы сделать следующее преобразование:

Length           Length Decimal 
0'-10 11/64"     0.85
4'- 7 19/64"     4.61
0'- 3"           0.25
62'- 3 3/4"      62.31
58'- 5 43/64"    58.47
2'-11 13/16"     2.98

Я думаю, мне придетсяпопытайтесь выделить каждый сегмент строки и преобразовать их в десятичную, а затем сложите их все вместе.Я использовал Excel для этой задачи, поэтому я не уверен, как справиться с этим в Python.Любая помощь будет оценена!

1 Ответ

1 голос
/ 06 мая 2019

Вы можете использовать регулярное выражение с именованными группами как @KlausD. предложить так:

df = df.assign(**df['Length'].str.extract(r"(?P<Feet>\d+)'-\s?(?P<Inches>\d+)\s?(?P<Num>\d+)?\/?(?P<Dem>\d+)?\"")\
                        .astype(float).fillna(0))
df['Length Decimal'] = df.eval("Feet + Inches / 12") + np.where(df.Num == 0,0,(df["Num"]/df["Dem"])/12)
df

Выход:

          Length  Length Decimal   Dem  Feet  Inches   Num
0   0'-10 11/64"        0.847656  64.0   0.0    10.0  11.0
1   4'- 7 19/64"        4.608073  64.0   4.0     7.0  19.0
2         0'- 3"        0.250000   0.0   0.0     3.0   0.0
3    62'- 3 3/4"       62.312500   4.0  62.0     3.0   3.0
4  58'- 5 43/64"       58.472656  64.0  58.0     5.0  43.0
5   2'-11 13/16"        2.984375  16.0   2.0    11.0  13.0
...