如何在 Python 中将列值转置为行值
How to Transpose Column Values to Row Values in Python
我想在 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
您可以使用numpy.transpose转置矩形数组。
numpy.transpose([[ 0,1],[2,3]])
array([[0, 2],
[1, 3]])
结果是 numpy.ndarray,但您可以使用 .tolist()
转换回列表。
这不是转置函数的超快速使用,对于较大的项目,您可能应该写一些更好的东西,但如果您只是想在教程中寻找一些简单的东西,那么它应该没问题。
a = [['Value1', 'Value2', 'Value3'],['Value3', 'Value4', 'Value5'],['Value4', 'Value2', 'Value1']]
for i,each in enumerate(a):
for elem in each:
print "user%s" %(i+1),elem
值列表(嵌套列表,不是真正的行和列)
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)
是在列表甚至 'transposing' 列表中配对项目的便捷方式。 '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
您可以使用numpy.transpose转置矩形数组。
numpy.transpose([[ 0,1],[2,3]])
array([[0, 2],
[1, 3]])
结果是 numpy.ndarray,但您可以使用 .tolist()
转换回列表。
这不是转置函数的超快速使用,对于较大的项目,您可能应该写一些更好的东西,但如果您只是想在教程中寻找一些简单的东西,那么它应该没问题。
a = [['Value1', 'Value2', 'Value3'],['Value3', 'Value4', 'Value5'],['Value4', 'Value2', 'Value1']]
for i,each in enumerate(a):
for elem in each:
print "user%s" %(i+1),elem
值列表(嵌套列表,不是真正的行和列)
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)
是在列表甚至 'transposing' 列表中配对项目的便捷方式。 'Transpose' 在此上下文中纯粹是一个类比,因为列表和列表对实际上没有列和行。