Python数据帧重新格式化为多索引

时间:2018-01-23 07:42:59

标签: python pandas

如何将以下原始数据帧转换为输出数据帧?

来源:

function my_autoloader($class) {
    require('classes/' . $class . '.class.php');
}

spl_autoload_register('my_autoloader');

输出:

**Date, Name, P1, P2**    
date1, name1, 2.0, 3.0
date2, name1, 3.1, 2.3
date1, name2, 3.4, 2.4
date2, name2, 2.0, 3.0

我想到了一种麻烦的方法,即过滤名称并连接结果数据帧块。但这似乎很愚蠢。你有什么机会可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用set_index + unstack + swaplevel + sort_index

df = df.set_index(['Date','Name']).unstack().swaplevel(0,1, axis=1).sort_index(axis=1)
print (df)
Name  name1      name2     
         P1   P2    P1   P2
Date                       
date1   2.0  3.0   3.4  2.4
date2   3.1  2.3   2.0  3.0

print (df.columns)
MultiIndex(levels=[['name1', 'name2'], ['P1', 'P2']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
           names=['Name', None])