如何将具有单级列的现有数据帧转换为具有分层索引列(多索引)
数据帧示例:
[1]on
:
作为pd进口熊猫
从熊猫导入系列,数据帧
df=数据帧(np.arange(6).重塑((2,3)),
索引=['A','B'],
列=[“一”,“二”,“三])
df
Output[1]:
123
A 0 1 2
B 3 4 5
我本以为reindex()会起作用,但我得到了NaN的:
[2]on
:
reindex(列=[['奇数','偶数','奇数'],df.columns])
Output[2]:
奇偶奇
123
阿楠楠
B楠楠楠楠楠
如果使用DataFrame(),则相同:
[3]on
:
数据帧(df,columns=[['奇数','偶数','奇数'],df.columns])
Output[3]:
奇偶奇
123
阿楠楠
B楠楠楠楠楠
如果我指定df.values,最后一种方法实际上是有效的:
[4]on
:
数据帧(df.values,index=df.index,columns=[['odd','偶数','odd'],df.columns])
Output[4]:
奇偶奇
123
A 0 1 2
B 3 4 5
正确的方法是什么?为什么reindex()会给出NaN的
很接近,只需将列直接设置为新的(大小相同)索引,如(如果是列表列表,则将转换为多索引)
[8]on
:df
Output[8]:
123
A 0 1 2
B 3 4 5
At[10]on:df.columns=[[“奇数”、“偶数”、“奇数”],df.columns]
In[11]:df
Output[11]:
奇偶奇
123
A 0 1 2
B 3 4 5
Reindex将对现有索引进行重新排序/筛选。得到所有NaN的原因是,查找与新索引匹配的现有列;没有匹配的,所以这就是你得到的