将指定列最大值的行输出到新文本文件
我有一个比较简单的任务需要自动化处理,用于分析。我在这个论坛上找到了类似的问题,但没有针对纯文本文件的解决方案,而且我还是个Python新手,不太确定怎么把这些解决方案直接应用到我的需求上。所以我非常希望能得到一些帮助。
我有一系列这样的文件:
11 5012 1000 10036040.000000 1.089555 4.529811 0.150000
11 5013 1000 10038040.000000 1.089783 4.340549 0.150000
11 5014 1000 10039040.000000 1.090000 4.733367 0.150000
11 5015 1000 10044040.000000 1.090217 4.601943 0.150000
11 5016 1000 10044040.000000 1.090435 5.048237 0.150000
11 5017 1000 10046040.000000 1.090652 1.280908 0.050000
每个文件的名字是“data1-1”、“data1-2”、“data1-3”等等。数据是用单个空格分开的,并且没有标题行。
我想要一个脚本,能够打开每个文件,找到第5列中最大值所在的那一行(比如上面提到的值5.048237),然后把这一行打印到一个新的输出文件中。最后,我需要一个输出文件,里面包含每个输入文件中第5列最大值的那一行。所以如果有5个输入文件,输出文件就应该有5行。
希望我说得清楚,任何帮助都非常感谢!
1 个回答
2
在编程中,有时候我们需要把一些数据从一个地方转移到另一个地方。这就像把书从一个书架搬到另一个书架一样。我们可以用不同的方法来完成这个任务,比如用手搬、用箱子装,或者用车运送。每种方法都有它的优缺点。
在代码中,我们也有类似的选择,比如使用不同的函数或者库来处理数据的转移。选择合适的方法可以让我们的工作更高效,也能减少出错的机会。
总之,了解不同的方法和工具,能够帮助我们更好地完成编程任务。
import glob, operator
fpout = open("result.dat","w")
for path in glob.glob("data?-?"):
with open(path, "r") as fp:
fields = [ line.split(" ") for line in fp ]
maxline = " ".join(max(fields, key = lambda row: float(row[5]))
print >> fpout, maxline