Python 以日期作为列标题对数据框进行排序

Python 以日期作为列标题对数据框进行排序,python,pandas,sorting,date,header,Python,Pandas,Sorting,Date,Header,我的日期必须以水年为单位,我想找到一种方法,让专栏以日期09/30/1899_24:00开始,以日期9/30/1999_24:00结束 起初,我像下面这张图片一样,但当我做数据帧透视时,它把顺序搞乱了。 这是我的代码片段 sim = pd.read_csv(headout,parse_dates=True, index_col='date') sim['Layer'] = sim.groupby('date').cumcount() + 1 sim['Layer']

我的日期必须以水年为单位,我想找到一种方法,让专栏以日期09/30/1899_24:00开始,以日期9/30/1999_24:00结束

起初,我像下面这张图片一样,但当我做数据帧透视时,它把顺序搞乱了。

这是我的代码片段

    sim = pd.read_csv(headout,parse_dates=True, index_col='date')
    sim['Layer'] = sim.groupby('date').cumcount() + 1
    sim['Layer'] = 'L' + sim['Layer'].astype(str)
    sim = sim.pivot(index = None , columns = 'Layer').T
    sim = sim.reset_index() 
    sim = sim.rename(columns={"level_0": "NodeID"})
    sim["NodeID"]= sim['NodeID'].astype('int64')
    sim['gse'] = sim['NodeID'].map(sta.set_index(['NodeID'])['GSE'])
问题是24:00不是有效时间 如果不将date列转换为有效的datetime,python会将该列视为字符串。 这将使执行任何类型的基于时间的分析变得非常困难 列的顺序将按如下数字顺序排列:“09/30/1899_24:00”、“10/31/1899_24:00”、“11/30/1898_24:00”、“11/30/1899_24:00” 注意,1898年11月30日是在1899年11月30日之前 将24:00改为23:59 作为pd进口熊猫 数据帧 df=pd.数据帧{'date':['09/30/1899_24:00','09/30/1899_24:00','09/30/1899_24:00','09/30/1899_24:00','10/31/1899_24:00', '10/31/1899_24:00', '10/31/1899_24:00', '10/31/1899_24:00', '11/30/1899_24:00', '11/30/1899_24:00']} ||日期| |--:|:---------| | 0 | 09/30/1899_24:00 | | 1 | 09/30/1899_24:00 | | 2 | 09/30/1899_24:00 | | 3 | 09/30/1899_24:00 | | 4 | 10/31/1899_24:00 | | 5 | 10/31/1899_24:00 | | 6 | 10/31/1899_24:00 | | 7 | 10/31/1899_24:00 | | 8 | 11/30/1899_24:00 | | 9 | 11/30/1899_24:00 | 24:00更换 df.date=df.date.str.replace'24:00','23:59' 格式化为日期时间 df.date=pd.to_datetimedf.date,格式='%m/%d/%Y\u%H:%m' 最终的 日期 0 1899-09-30 23:59:00 1 1899-09-30 23:59:00 2 1899-09-30 23:59:00 3 1899-09-30 23:59:00 4 1899-10-31 23:59:00 5 1899-10-31 23:59:00 6 1899-10-31 23:59:00 7 1899-10-31 23:59:00 8 1899-11-30 23:59:00 9 1899-11-30 23:59:00 删除所有时间组件 df.date=df.date.str.replace“24:00”, df.date=pd.to_datetimedf.date,格式='%m/%d/%Y' 日期 0 1899-09-30 1 1899-09-30 2 1899-09-30 3 1899-09-30 4 1899-10-31 5 1899-10-31 6 1899-10-31 7 1899-10-31 8 1899-11-30 9 1899-11-30
尝试df[df.columns.tolist[:-1]]不起作用,我得到1900年1月31日作为第一个日期