Как преобразовать объект в DateTime в pandas - PullRequest
0 голосов
/ 14 июля 2020

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

31.01.2016 13:59:13 31.01.2016 13:59:13 31.01.2016 14:39:20 31.01.2016 14:39:20 31.01.2016 15:19:27 31.01.2016 15:19:27 31.01.2016 15:59:34 31.01.2016 15:59:34 31.01.2016 16:39:41 31.01.2016 16:39:41 31.01.2016 17:19:48 31.01.2016 17:19:48 31.01.2016 17:59:55 31.01.2016 17:59:55 31.01.2016 18:40:02 

Код, который я использовал для чтения файла, следующий (это действительно беспорядочный файл):

df = pd.melt(pd.read_csv(file, delimiter='\t', skiprows=3, index_col=0, decimal=",").rename(columns={"Unnamed: 1":"Depth [m]"}), id_vars=["Depth [m]"], var_name="Date", value_name="Temperature").set_index("Date"))

В результате у меня есть DataFrame. Этот DataFrame имеет столбец, который нужно преобразовать в DateTime (Date), а затем я буду использовать его в качестве индекса. Когда я читаю DataFrame и пытаюсь преобразовать даты в DateTime, это не работает. На этом этапе Дата является «объектом». Мои данные выглядят так:

                  Date  Depth [m]  Temperature
0  01.01.2016 00:32:09        0.0        26.59
1  01.01.2016 01:12:16        0.0        26.67
2  01.01.2016 01:52:23        0.0        26.45
3  01.01.2016 02:32:30        0.0        26.41
4  01.01.2016 03:12:37        0.0        26.43

Когда я применяю pd.to_datetime () с «принуждением», происходит следующее:

df["Date] = pd.to_datetime(df["Date], errors="coerce", format= "%d.%m.%Y %H:%M:%S" )
DatetimeIndex: 10001662 entries, 2016-01-01 00:32:09 to 2015-12-31 23:52:02

Это может работать, но я получаю много Значения NAT в пределах

Когда я применяю pd.to_datetime () с «игнорировать» и проверяю информацию о DF, происходит следующее:

df["Date] = pd.to_datetime(df["Date], errors="ignore", format= "%d.%m.%Y %H:%M:%S" )

Кадры и объект

Index: 10001662 entries, 01.01.2016 00:32:09 to 31.12.2015 23:52:02

Когда я применяю pd.to_datetime () с «raise», он не работает.

Есть ли какие-нибудь идеи о том, что я делаю неправильно?

...