Как я могу преобразовать 23 года 0 месяцев в числовое значение, чтобы использовать его в прогнозном моделировании - PullRequest
1 голос
/ 21 сентября 2019

У меня есть набор данных, в котором значения находятся в этой форме

23 года 0 месяцев или 2 года 6 месяцев

Как преобразовать его в числовые данные или любую другую форму, чтобы онможно использовать в прогнозном моделировании, используя панд

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Исходя из того, что ALollz сказал в комментариях, вы можете разбить строку на пробелы и добавить месяцы в процентах от года

a = "23 years 6 months"
b = a.split(" ")

print(str(float(b[0]) + float(b[2])/12))

Вывод: 23.5

0 голосов
/ 22 сентября 2019

Я фанат кодирования, чтобы позволить мне легко изменять вывод в будущем, поэтому я пришел к следующему:

convs = {'ye': 1, 'mo': 12, 'we': 52.1429, 'da': 365}  # conversion rates to a year

conv_to = 'ye'  # choose your desired unit!
times = {i: convs[conv_to] / float(convs[i]) for i in convs}

s = "1 year 1 month 1 week 1 day"
s = s.split(" ")
s = list(zip(s[0::2], s[1::2]))

converted_amt = sum([float(times[i[1].lower()[:2]]) * float(i[0]) for i in s])

print(converted_amt)

С этим вы можете легко добавить больше детализации для поддержки часов, минути многое другое.

Ввод:

conv_to = 'mo' s = "23 years 2 months 3 weeks 24 days"

Выход: 279.4794514873339

Ввод:

conv_to = 'ye' s = "8 years 9 months 0 weeks 3 day"

Вывод:

3196.75

Ввод (работает в любом порядке):

conv_to = 'da' s = "2 days 1 week"

Выход:

8.999994246580073

Как видите, преобразование в дни, когда используются недели, будет не совсем точным, так как значение, которое я использую, - это среднее значение, найденное в Google.Округление должно помочь этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...