-
30秒到达战场
您可以尝试获取列的分类代码,然后将索引堆叠和收敛到元组df.columns = df.columns.to_series().astype('category').cat.codesdf1 = df.stack().reorder_levels([1,0]).sort_index()df1.index = tuple(df1.index)出去:(0, 01.01.2000) a1(0, 01.02.2000) a2(0, 01.03.2000) a3(1, 01.01.2000) b1(1, 01.02.2000) b2(1, 01.03.2000) b3(2, 01.01.2000) c1(2, 01.02.2000) c2(2, 01.03.2000) c3dtype: object** 编辑 **根据索引级别对数据进行排序df.index = pd.to_datetime(df.index)df.columns = df.columns.to_series().astype('category').cat.codesdf1 = df.stack().reorder_levels([1,0]).sort_index(level=1)df1.index = tuple(df1.index)出去:(0, 2000-01-01 00:00:00) a1(1, 2000-01-01 00:00:00) b1(2, 2000-01-01 00:00:00) c1(0, 2000-01-02 00:00:00) a2(1, 2000-01-02 00:00:00) b2(2, 2000-01-02 00:00:00) c2(0, 2000-01-03 00:00:00) a3(1, 2000-01-03 00:00:00) b3(2, 2000-01-03 00:00:00) c3dtype: object
-
精慕HU
你需要reset_index两次然后就做melts=df.reset_index().reset_index().melt(['level_0','index'])yourdf=pd.DataFrame({'index':tuple(zip(s['level_0'],s['index'])),'X':s.value})yourdfOut[130]: index X0 (0, 01.01.2000) a11 (1, 01.02.2000) a22 (2, 01.03.2000) a33 (0, 01.01.2000) b14 (1, 01.02.2000) b25 (2, 01.03.2000) b36 (0, 01.01.2000) c17 (1, 01.02.2000) c28 (2, 01.03.2000) c3
-
慕盖茨4494581
理解pd.DataFrame([ [(i, idx), v] for i, (idx, *V) in enumerate(df.itertuples()) for v in V], columns=['index', 'X']) index X0 (0, 01.01.2000) a11 (0, 01.01.2000) b12 (0, 01.01.2000) c13 (1, 01.02.2000) a24 (1, 01.02.2000) b25 (1, 01.02.2000) c26 (2, 01.03.2000) a37 (2, 01.03.2000) b38 (2, 01.03.2000) c3