我想从嵌入在列名中的数据创建索引作为多级索引的一部分。这个问题比描述要容易得多。这就是我的原始数据:
d = {'time':[0,1,2], 'part_0_hits': [100,200,300], 'part_1_hits': [25,50,75]}
df = pd.DataFrame(d)
我想创建一个名为'part'的新索引,其中包含列名中的部件号。结果需要如下所示:
d2 = {'time':[0,1,2,0,1,2], 'part':[0,0,0,1,1,1], 'hits':[100,200,300,25,50,75]}
df2 = pd.DataFrame(d2)
我会把表放在这里,但我不确定如何进行标记。这是我的iPython笔记本的快照,其中显示了数据框:
必须有一种优雅的方式来做到这一点,但我似乎无法找到它。如果我可以让它看起来像上面的数据帧,我可以使用set_index来创建多级索引......
感谢!!!
答案 0 :(得分:2)
您可以将pd.melt用于此
df = pd.melt(df, id_vars=["time"],var_name="part", value_name="hits")
df['part'] = df['part'].str.extract('(\d+)').astype(int)
你得到了
time part hits
0 0 0 100
1 1 0 200
2 2 0 300
3 0 1 25
4 1 1 50
5 2 1 75