Pandas: Как преобразовать дату и время в% H:% H и использовать формат даты и времени? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть датафрейм в 1 столбце с разным временем.

Time
-----
10:00
11:30
12:30
14:10
...

Мне нужно сделать квантильный диапазон на этом кадре данных с кодом ниже:

df.quantile([0,0.5,1],numeric_only=False)

По ссылке ниже, квантиль работает. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.quantile.html

Поскольку мой столбец как объект, мне нужно преобразовать его в pd.datetime или pd.Timestamp. Когда я преобразую в pd.datetime, все мое время будет вставлено с датами. Если я отформатирую его в% H:% M, столбец вернется к объекту, который не может работать с квантилем в режиме numeric_only.

Как я могу преобразовать в формат даты и времени в% H:% M и все еще придерживаться формата даты и времени?

Ниже был код, который я использовал:

df = pd.DataFrame({"Time":["10:10","09:10","12:00","13:23","15:23","17:00","17:30"]})
df['Time2'] = pd.to_datetime(df['Time']).dt.strftime('%H:%M')
df['Time2'] = df['Time2'].astype('datetime64[ns]')

1 Ответ

1 голос
/ 06 марта 2020

Как я могу преобразовать в формат даты и времени в% H:% M и все еще придерживаться формата даты и времени?

Невозможно в pandas, возможно, ближе использовать timedelta s:

df = pd.DataFrame({"Time":["10:10","09:10","12:00","13:23","15:23","17:00","17:30"]})
df['Time2'] = pd.to_timedelta(df['Time'].add(':00'))
print (df)
    Time    Time2
0  10:10 10:10:00
1  09:10 09:10:00
2  12:00 12:00:00
3  13:23 13:23:00
4  15:23 15:23:00
5  17:00 17:00:00
6  17:30 17:30:00
...