提前感谢您的回答! 我有很多包含列的文件。 我想在多个文件中分别导出所有列。 此外,我想使用每列的第一个值作为文件名的索引。
例如。如果我有“test_.dat”文件,其中包含3列:
... ...
我想要三个文件:“test_12.dat”,“test_54.dat”& “test_159.dat”。 “test_12.dat”在哪里:
我知道我需要考虑两个循环(一个用于初始文件),另一个用于读取/导出列。 我只知道如何使用附加,但这是一个非常耗时的方法。 我非常感谢你的支持。 这是我的尝试:
从文件夹中找到所有“.dat”:
for fname in glob.glob(‘test_*.dat’):
temp=numpy.loadtxt(fname,skiprows=2)
data.append(temp)
namefiles=glob.glob('test*.dat')
将所有列附加在一起(非常长的步骤):
for i in range (len(nomfichier)):
for k in range (1,nbrechi+1):
for j in range (points):
ikj.append(data[i][j][k])
定义两个变量来分割变量(点数是行数)
seq2=[ikj[i:i+points] for i in range(0, len(ikj), points)]
chunks = [ikj[points*i:points*(i+1)] for i in range(len(ikj)/points + 1)]
导出特定文件中的列:
for j in range(len(nomfichier)):
for i in range(len(seq2)/len(namefiles)):
z=z+1
savetxt(namefiles[j][:-4] + « _number_ » + str(flattened[i]) + ".dat", zip(firstcolumn,seq2[z]))
print(namefiles[j][:-4] + « _number_ » + str(flattened[i]))
zz.append(z)
答案 0 :(得分:1)
一种简单的方法是使用pandas
读取大文件,它专为大数据处理而设计。
要阅读数据,请使用以下内容:
import pandas as pd
df = pd.read_csv('test.bat', sep='\s', engine='python', header=None)
要将列保存为单个文件,您可以使用以下代码:
for ci in df.columns.values:
data = df[ci]
data.to_csv('test_{}.bat'.format(data[0]))
您可以根据bat文件中使用的内容更改sep
。 pandas的defualt是一个逗号,但在这种情况下,就像在你的示例数据中一样,我使用了空格。希望它有所帮助!
答案 1 :(得分:0)
fps_out = []
with open('test_.dat', 'r') as fp_in:
for line in fp_in:
if not fps_out:
for data in line.split():
fps_out.append(open('test_%s.dat' % data, 'w'))
else:
for pos, data in enumerate(line.split()):
fps_out[pos].write(data + '\n')
for fp in fps_out:
fp.close()