如何在Python中将列值转换为行值

时间:2016-01-05 06:23:45

标签: python python-2.7 transpose

我想在R中进行市场购物篮分析,并且需要在此之前转换我的Python数据。

当前数据:

[[Value1, Value2, Value3,...],
[Value3, Value4, Value5,...],
[Value4, Value2, Value1,...]]

预期产出

User1 Value1
User1 Value2
User1 Value3
User2 Value3
User2 Value4
User2 Value5
User3 Value4
User3 Value2
User3 Value1

3 个答案:

答案 0 :(得分:1)

a = [[' Value1',' Value2',' Value3'],[' Value3',' Value4& #39;,' Value5'],[' Value4',' Value2',' Value1']

for i,each in enumerate(a):
    for elem in each:
        print "user%s" %(i+1),elem

答案 1 :(得分:0)

您可以使用numpy.transpose转置矩形数组。

numpy.transpose([[ 0,1],[2,3]]) 
array([[0, 2],
       [1, 3]])

结果是numpy.ndarray,但您可以使用.tolist()转换回列表。

这不是转置功能的超级快速使用,对于较大的项目,你应该写一些更好的东西,但如果你只是想在你的教程中找到一些简单的东西,那么应该没问题。

答案 2 :(得分:0)

值列表(嵌套列表,而不是行和列)

In [264]: ll=[[1,2,3],[3,4,5],[4,2,1]]

用户名列表 - ll中每个项目的一个值:

In [265]: ul=['user1','user2','user3']

包含ulll

值的展平输出
In [266]: print('\n'.join(['%s %s'%(i,x) for i,j in zip(ul,ll) for x in j]))
user1 1
user1 2
user1 3
user2 3
user2 4
user2 5
user3 4
user3 2
user3 1

显然,这可以作为嵌套for进行转换,并使用行打印。或者保留为字符串列表或元组列表(或子列表):

In [268]: ['%s %s'%(i,x) for i,j in zip(ul,ll) for x in j]
Out[268]: 
['user1 1',
 'user1 2',
 'user1 3',
 'user2 3',
 'user2 4',
 'user2 5',
 'user3 4',
 'user3 2',
 'user3 1']
In [269]: [(i,x) for i,j in zip(ul,ll) for x in j]
Out[269]: 
[('user1', 1),
 ('user1', 2),
 ('user1', 3),
 ('user2', 3),
 ('user2', 4),
 ('user2', 5),
 ('user3', 4),
 ('user3', 2),
 ('user3', 1)]

In [272]: list(zip(ul,ll))
Out[272]: [('user1', [1, 2, 3]), ('user2', [3, 4, 5]), ('user3', [4, 2, 1])]

zip(list1,list2)是一种在列表中配对项目,甚至是“转置”列表的便捷方式。在这种情况下,“Transpose”纯粹是一个类比,因为列表和列表对实际上没有列和行。