【问题标题】:combine text files column wise逐列合并文本文件
【发布时间】:2013-08-05 15:44:43
【问题描述】:

我有许多包含 259,200 x 1 数据点的文本文件 (1,409)(每个文本文件都是一年和变量)。我想将这些合并到一个文本文件列中,即

botTemp_1950 | botTemp_1951 | botTemp_1952 | ... etc
....           ....           .... 
.
.
.

我已经这样做了,但是数据被排列成 1 列,大小为 4GB。有没有办法做到这一点,但在 Windows 中按列显示,还是我需要像 Python 这样的脚本语言?

然后我想为每列仅屏蔽 200 行左右的数据,并为每列取平均值,这样我就有每个变量的时间序列。

如果我可以同时做这两件事,那么理想,但主要是在按列之后,我可以在 Excel 中相当容易地应用掩码,前提是我可以打开文本文件。

提前致谢。

【问题讨论】:

  • 您可以在 Excel 中完成所有工作 - 一个简单的 VBA for 循环,您可以在其中读取每个文本文件并将其输出到下一列...默认情况下,文本文件中的每一行都变为一个新的行,所以它应该相当简单......
  • 听起来你最终会得到一个 1,409 列 x 1 行的文件,而不是 1 列 x 1,409 行的文件。所以关于“想要为每列仅屏蔽 200 行左右的数据”的部分没有多大意义。

标签: python excel text-files multiple-columns


【解决方案1】:

在 Python 中,您可以尝试以下操作:

os.chdir(current_dir_with_txt_files)
txtfiles = [open(i) for i in os.listdir('*.txt')]

out = open(out_name, 'w')

from itertools import izip
for l1,l2,l3 in izip(*txtfiles):
    out.write(','.join(l1.strip(), l2.strip(), l3.strip() + '\n')
out.close()

这可能需要一段时间,但不会消耗您所有的 RAM 内存。

【讨论】:

  • 谢谢@Saullo,在第一行之后我似乎无法让它工作,即:
  • txtfiles = [open(i) for i in os.listdir('.txt')] Traceback(最近一次调用最后):文件“”,第 1 行, in txtfiles = [open(i) for i in os.listdir('.txt')] WindowsError: [Error 123] The filename, directory name, or volume label syntax is wrong: '.txt/.*'
  • 这个错误是因为文件名不正确,尝试根据你的文件夹结构改一下
猜你喜欢
  • 2013-10-03
  • 1970-01-01
  • 2022-11-05
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2013-02-21
  • 2017-04-11
相关资源
最近更新 更多