【发布时间】:2019-02-05 20:13:02
【问题描述】:
我想重新排序数据框中的列,并将基础值保留在正确的列中。
例如,这是我拥有的数据框
cols = [ ['Three', 'Two'],['A', 'D', 'C', 'B']]
header = pd.MultiIndex.from_product(cols)
df = pd.DataFrame([[1,4,3,2,5,8,7,6]]*4,index=np.arange(1,5),columns=header)
df.loc[:,('One','E')] = 9
df.loc[:,('One','F')] = 10
>>> df
我想将其更改如下:
header2 = pd.MultiIndex(levels=[['One', 'Two', 'Three'], ['E', 'F', 'A', 'B', 'C', 'D']],
labels=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2], [0, 1, 2, 3, 4, 5, 2, 3, 4, 5]])
df2 = pd.DataFrame([[9,10,1,2,3,4,5,6,7,8]]*4,index=np.arange(1,5), columns=header2)
>>>>df2
【问题讨论】:
-
单独的问题 - 我使用哪种语法来显示数据框
-
您在第一个和第二个 DataFrame 中的 MultiIndex 不一样...您到底想做什么?
-
基本上我正在尝试重新排序列,将顶部标题更改为“一”、“二”、“三”,对于“二”和“三”标题,重新排序底部标题为 'A','B','C','D'
-
你能解释一下为什么最后的排序是“一二三”而不是“一三二”吗?
-
这只是一个例子,关键是我正在寻找一种方法将列按任何特定顺序(不一定按字母顺序)
标签: python pandas dataframe multi-index