Python 如何对文本文件中的第n列进行排序
因此,我的数据如下所示:Python 如何对文本文件中的第n列进行排序,python,sorting,Python,Sorting,因此,我的数据如下所示: 1346542 2014年5月5日 1245678 2014年5月4日 3 4256876 2014年5月2日 45643156 2014年5月6日 ..... 我想把第二列的7位ID编号从最大到最小排序。另外,根据ID号中的第一个数字,我希望将每一行发送到不同的文本文件(即,对于所有以3开头的ID号,将整行发送到文本文件,对于所有以1开头的ID号,将整行发送到另一个文本文件…依此类推)。完成类似操作的最简单方法是什么?假设您的输入数据是文本,我将从分隔行和行中的列开
1346542 2014年5月5日
1245678 2014年5月4日
3 4256876 2014年5月2日
45643156 2014年5月6日
.....
我想把第二列的7位ID编号从最大到最小排序。另外,根据ID号中的第一个数字,我希望将每一行发送到不同的文本文件(即,对于所有以3开头的ID号,将整行发送到文本文件,对于所有以1开头的ID号,将整行发送到另一个文本文件…依此类推)。完成类似操作的最简单方法是什么?假设您的输入数据是文本,我将从分隔行和行中的列开始。请参见此函数 结果应该是一个列表列表。然后,如果提供关键字参数
key=
,则可以使用sort()
或sorted()
函数按第二列排序。您可能必须将数字列转换为int,以便将它们从小到大(而不是按字母顺序)排序
对于问题的最后一部分,您可以使用它提供您所要求的分组功能
这应该让你开始。另一个选择是使用熊猫。“我不是在问答案,我是在问概念上从哪里开始。” 开始使用读取文本文件,使用拆分数据,将以以下格式提供数据:
['1','3456542','2014年5月5日]
现在你应该可以完成你的任务了
提示:查找内置函数和。以下是我的方法:
import csv
from operator import itemgetter
#read in file
file_lines = []
with open("test.txt", "r") as csv_file:
reader = csv.reader(csv_file, delimiter=" ")
for row in reader:
file_lines.append(row)
#sort
file_lines.sort(key=itemgetter(1))
#write sorted file
with open("test_sorted.txt", "w") as csv_file:
writer = csv.writer(csv_file, delimiter=" ")
for row in file_lines:
writer.writerow(row)
#separate files
for row in file_lines:
file_num = row[1][0]
with open("file_{0}.txt".format(file_num), "w") as f:
writer = csv.writer(f, delimiter=" ")
writer.writerow(row)
你可以试着用熊猫。这就很容易了
import pandas as pd
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
txt = StringIO('''
a b c d e
1 3456542 5 may 2014
2 1245678 4 may 2014
3 4256876 2 may 2014
4 5643156 6 may 2014
''')
df = pd.read_csv(txt, delim_whitespace=True)
df.sort('b', ascending=False)
将熊猫作为pd导入
导入系统
如果系统版本信息[0]<3:
从StringIO导入StringIO
其他:
从io导入StringIO
txt=StringIO(“”)
a、b、c、d、e
1346542 2014年5月5日
1245678 2014年5月4日
3 4256876 2014年5月2日
45643156 2014年5月6日
''')
df=pd.read\u csv(txt,delim\u空格=True)
df.sort('b',升序=False)
您尝试过什么?你在哪里卡住了?Stackoverflow不是免费代码服务。如果你没有尝试过任何事情的话,投票结束这件事可不是一件容易的事。但是是的,熊猫包是你需要的。我不是在问答案,我是在问概念上从哪里开始。数据可能可以通过模块读取。list方法采用可选参数,允许您控制每行的哪一部分用于排序。这将需要将所有数据读入内存。如何将多行写入每个txt输出文件?