Как взять первые одну или две цифры из числа с плавающей точкой? - PullRequest
0 голосов
/ 10 октября 2018

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

Пример значений столбца времени от (1 до 12):

1000.0 -> 10
901.0 ->  9

Пример значений столбца времени из (13до 24):

1850.0 -> 18
2301.0 -> 23

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

for index,row in df.iterrows():
    if(row['time']<=959.0):
        row['hour']= int(str(row['dep_time'])[:1])
    elif row['dep_time']>959.0: 
         row['dep_hour']=int(str(row['dep_time'])[:2])

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Как насчет этого с делением на этаж и int приведением?

>>> int(1000.0 // 100)
10
>>> int(901.0 // 100)
9
>>> int(1850.0 // 100)
18
>>> int(2301.0 // 100)
23
0 голосов
/ 10 октября 2018

Я полагаю, что самый простой вариант здесь - использовать функцию "modulo" (%):

time=1234.0
minutes=time%100 #gets the last 2 digits
hours=(time-minutes)/100
print(minutes)
print(hours)

Лучшим вариантом было бы определить время с использованием библиотеки datetime и использовать ее (здесьссылка на документацию: https://docs.python.org/2/library/datetime.html)

0 голосов
/ 10 октября 2018

С Pandas не итерируйте строки, когда доступны векторизованные методы.В этом случае вы можете использовать разделение по этажам, за которым следует pd.Series.astype:

df['hour'] = (df['dep_time'] // 100).astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...