Допустим, у меня есть следующий фрейм данных:
df = pd.DataFrame({"id": range(4), "price": ["15dollar/m2/day", "90dollar/m2/month", "18dollar/m2/day", "100dollar/m2/month"]})
id price
0 0 15dollar/m2/day
1 1 90dollar/m2/month
2 2 18dollar/m2/day
3 3 100dollar/m2/month
Я хотел бы разбить столбец price
на два новых столбца: unit_price
и price_unit
, как показано ниже:
id unit_price price_unit
0 0 15.0 dollar/m2/day
1 1 90.0 dollar/m2/month
2 2 18.0 dollar/m2/day
3 3 100.0 dollar/m2/month
Это мое решение:
df['unit_price'] = df['price'].str.split('dollar').str[0].astype(float)
#df['unit_price'] = df['price'].str.extract('(\d*\.\d+|\d+)', expand=False).astype(float)
df['price_unit'] = df['price'].str.split('dollar').str[1]
del df['price']
Для столбца unit_price
он работает нормально, но для price_unit
, когда я разделил на dollar
, я получил результат, как показано ниже, который не включает символ dollar
, или если я использую df['price'].str.replace(r'\d', '')
Все номера были удалены.
Как я могу сделать это правильно в Python? Благодаря.
df['price_unit']
Out[474]:
0 /m2/day
1 /m2/month
2 /m2/day
3 /m2/month
Name: price_unit, dtype: object