Как преобразовать объект времени в формат даты и времени в пандах (python)? - PullRequest
0 голосов
/ 30 июня 2018

Я новичок в пандах и практикую некоторые базовые функции. У меня есть файл CSV, который содержит некоторые данные каждой минуты какой-либо даты. После чтения CSV df.head() дает следующий результат:

        Time            C1  C2  C3  C4  C5  C6
0  2016-05-25 03:15:00  0   0   0   0   0   0
1  2016-05-25 03:16:00  0   0   0   0   0   0
2  2016-05-25 03:17:00  0   0   2   0   0   0  
3  2016-05-25 03:18:00  0   0   0   5   0   2
4  2016-05-25 03:19:00  0   0   0   0   0   5

Я использовал parse_dates вариант pd.read_csv. Следовательно, время в формате datetime64[ns]. Поскольку дата совпадает, я не хочу, чтобы это было в моей колонке. Итак, я использую

df['Time']=df['Time'].dt.time

Он делает то, что я хочу, но он меняет формат на object, чего я не хотел. По предложению некоторых других ответов я сделал следующее:

df['Time']=pd.to_datetime(df['Time'], format="%H:%M:%S")
df['Time'].head()

0      1900-01-01 03:15:00
1      1900-01-01 03:16:00
2      1900-01-01 03:17:00
3      1900-01-01 03:18:00
4      1900-01-01 03:19:00
Name: Time, dtype: datetime64[ns]

Это преобразовало столбец в datetime64[ns], но добавила дополнительную дату. Можно ли преобразовать только время в datetime64[ns]?

1 Ответ

0 голосов
/ 30 июня 2018

Нет, это невозможно. Для даты всегда нужны даты.

Но если нужно работать со временем, лучше использовать timedelta s для strftime для строк HH:MM:SS с to_timedelta:

df['Time'] = pd.to_timedelta(df['Time'].dt.strftime('%H:%M:%S'))
print (df)
      Time  C1  C2  C3  C4  C5  C6
0 03:15:00   0   0   0   0   0   0
1 03:16:00   0   0   0   0   0   0
2 03:17:00   0   0   2   0   0   0
3 03:18:00   0   0   0   5   0   2
4 03:19:00   0   0   0   0   0   5

print (df.dtypes)
Time    timedelta64[ns]
C1                int64
C2                int64
C3                int64
C4                int64
C5                int64
C6                int64
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...