我想在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
答案 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']
包含ul
和ll
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”纯粹是一个类比,因为列表和列表对实际上没有列和行。