我有一个Python脚本。运行各种命令导入,转置和处理CSV文件中的数据后,我最终得到一个如下所示的数据框:
PV PV
Date 30/11/2016 01/12/2016
00:30 4 4
01:00 5 1
01:30 6 7
etc
我现在想要的是删除2016年11月30日的列,只留下2016年12月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])])
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)
整个11月到今天,即12月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,因此Y-M-D,第二组是2016-01-12,因此是Y-D-M。为什么日期格式不同?我怎么把它们都保留为Y-M-D?
答案 0 :(得分:0)
这有效:
df.columns = pd.MultiIndex.from_arrays([df.columns, pd.to_datetime(df.iloc[0], format='%d/%m/%Y')])