我有一个python用户项分级字典,如下所示:
sample={'user1': {'item1': 2.5, 'item2': 3.5, 'item3': 3.0, 'item4': 3.5, 'item5': 2.5, 'item6': 3.0},
'user2': {'item1': 2.5, 'item2': 3.0, 'item3': 3.5, 'item4': 4.0},
'user3': {'item2':4.5,'item5':1.0,'item6':4.0}}
我想把它转换成一个pandas数据框架,它的结构如下
col1 col2 col3
0 user1 item1 2.5
1 user1 item2 3.5
2 user1 item3 3.0
3 user1 item4 3.5
4 user1 item5 2.5
5 user1 item6 3.0
6 user2 item1 2.5
7 user2 item2 3.0
8 user2 item3 3.5
9 user2 item4 4.0
10 user3 item2 4.5
11 user3 item5 1.0
12 user3 item6 4.0
任何想法都将非常感谢:)
我在这里使用^{} 提供了另一种可能性:
详细说明
应用
stack
将在已由item
索引的行轴的子级上旋转列轴。根据您的需要,首先使用user
对转置的数据帧执行操作:您需要基本列而不是索引,因此只需重置索引:
我认为你要做的手术——拆开桌子——叫做“融化”。在这种情况下,硬部分可以通过
pd.melt
来完成,其他基本上都是重命名和重新排序:简单地调用
DataFrame
会生成一些具有我们想要的信息但形状错误的内容:因此,让我们将索引提升为实列并改进名称:
然后我们可以调用
pd.melt
来转换列。如果我们不指定我们想要的变量名“user”,它将给它一个无聊的“variable”名称(就像它给数据本身一个无聊的名称“value”)。最后,我们可以对索引重新排序和编号:
一旦你习惯了,
melt
是非常有用的。通常,就像这里一样,在前后进行一些重命名/重新排序。请尝试以下代码:
相关问题 更多 >
编程相关推荐