У меня есть скрипт Python. После выполнения различных команд для импорта, транспонировать и обрабатывать данные из файла CSV, я в конечном итоге с dataframe, который выглядит следующим образом:Python Pandas datetime и multiindex issue
PV PV
Date 30/11/2016 01/12/2016
00:30 4 4
01:00 5 1
01:30 6 7
etc
То, что я хочу сейчас, чтобы удалить столбец для 30/11/2016, оставив только данные за 01/12/2016. Это код, у меня есть:
# create MultiIndex.from_arrays from first row of DataFrame first, then remove first row
# by df.iloc
df.columns = pd.MultiIndex.from_arrays([df.columns, pd.to_datetime(df.iloc[0])])
df = df.iloc[1:]
# get today's date minus 60 mins. the minus 60 mins will account for the fact that the
# very last half hourly data slot is produced at the beginning of the next day
date = dt.datetime.today() - dt.timedelta(minutes=60)
# convert to correct format:
date = date.strftime("%d-%m-%Y")
# Use indexslice to remove unwanted date columns i.e. none that are not for today's
# date
idx = pd.IndexSlice
df = df.loc[:,idx[:,[date]]]
# drop the second level of the multiindex, which is the level containing the date, which
# is no longer required
df.columns = df.columns.droplevel(1)
Это было прекрасно работать в целом ноября до сегодняшнего дня, 1 декабря, когда он начал бросать вверх ошибки. То, что я проследил его первый раздел кода, т.е.:
# create MultiIndex.from_arrays from first row of DataFrame first, then remove first row
# by df.iloc
df.columns = pd.MultiIndex.from_arrays([df.columns, pd.to_datetime(df.iloc[0])])
Выход из которых:
PV
Date 2016-11-30 2016-01-12
Date 30/11/2016 01/12/2016
00:30 4 4
01:00 5 1
01:30 6 7
etc
Проблема заключается в первом наборе дат, показанных выше, первый из который составляет 2016-11-30, поэтому YMD, второй - 2016-01-12, поэтому YDM. Почему формат даты отличается? Как я буду держать их обоих как Y-M-D?