如何将以下原始数据帧转换为输出数据帧?
来源:
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
我想到了一种麻烦的方法,即过滤名称并连接结果数据帧块。但这似乎很愚蠢。你有什么机会可以帮忙吗?
答案 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])