python查询将行转换为列

0 投票
3 回答
3415 浏览
提问于 2025-04-17 23:03

我是从标准输入获取的数据

macys 100
sears 20
Boscov's 5
JCPenney 21
Kohl's 22
Others 16

这个列表会不断增加。

我想要的输出格式如下

macys sears Boscov's JCPenney Kohl's Others 
100    20   5         21       22     16

3 个回答

0

大家都提到过,可以使用 cols = zip(*rows) 这个方法,举个例子...

some_text = """
macys 100
sears 20
Boscov's 5
JCPenney 21
Kohl's 22
Others 16
"""
#perhaps for you it will be some_text = sys.stdin.read()


#first convert it to a python list
some_list = some_text.splitlines()

#get rid of any empty lines
filtered_list = filter(None,some_list)

#split each line in half
rows_of_data = [line.split() for line in filtered_list]

#transpose it (turn it sideways)
headers,data = zip(*rows_of_data)


#print it out how you want
print "\n".join((" ".join(headers),
 " ".join("%-*s"%(len(headers[i]),value) for i,value in enumerate(data))))
0

这段内容是关于编程的一些讨论,主要是在解决某个技术问题。参与讨论的人们分享了他们的看法和解决方案,可能涉及到一些代码示例和具体的技术细节。

在这个讨论中,大家可能会提到一些常见的编程概念,比如变量、函数、循环等。虽然这些术语听起来有点复杂,但其实它们都是用来帮助程序员更好地组织和处理信息的工具。

如果你是编程小白,理解这些内容可能需要一些时间,但没关系,慢慢来,逐步学习就好。记住,编程的世界很大,大家都是从零开始的,重要的是保持好奇心和学习的热情。

for line in stdin:
    a = line.split()
    list_a = a[0]
    list_b = a[1]
print list_a
print list_b
0
datastring = """macys 100
sears 20
Boscov's 5
JCPenney 21
Kohl's 22
Others 16"""

converted = zip(*(line.split() for line in datastring.splitlines()))

converted 是一个包含元组的列表,每个元组里都有你在某一行中的项目。

你可以使用 pandas 这个外部库,方便地对数据进行后续处理:

import pandas as pd

dt = pd.DataFrame.from_records(converted[1:], columns=converted[0])
print dt

输出:

  macys sears Boscov's JCPenney Kohl's Others
0   100    20        5       21     22     16

撰写回答