我有20个txt文件。10人
A_1,A_2......A_10剩下的10个是
B_1,B_2.....B_3......B_10因此,基本上,我试图将A_1和B_1、A_2和B_2.、A_10和B_10横向合并(这意味着如果A和B中各有4列,我希望输出有8列)。我还想保存这10个合并的文件。我在Python方面真的很新,所以不知道该怎么做。
import numpy as np
filelist=[]
filelist1=[]
for i in range(1,11):
filelist.append("/Users/Hrihaan/Desktop/A_%s.txt" %i)
for j in range(1,11):
filelist1.append("/Users/Hrihaan/Desktop/B_%s.txt" %j)发布于 2017-08-01 17:54:18
你的问题可以很容易地用熊猫解决。下面的代码将读取文件A_1 - A_10和B_1 - B_10,然后水平地追加相应的文件,最终生成10个数据帧。
import pandas
dataFrames_A = []
dataFrames_B = []
# file count of each type A or B
fileCount = 10
for i in range(1,fileCount+1):
fileName_A = 'C:/Users/Hrihaan/Desktop/A_' + str(i) + '.txt'
fileName_B = 'C:/Users/Hrihaan/Desktop/B_' + str(i) + '.txt'
dataFrames_A.append(pandas.read_csv(fileName_A, sep='\t', encoding='utf-8'))
dataFrames_B.append(pandas.read_csv(fileName_B, sep='\t', encoding='utf-8'))
mergedDataFrames = []
for i in range(0,fileCount):
mergedDataFrames.append(pandas.concat([dataFrames_A[i], dataFrames_B[i]], axis=1))
for i, dataFrame in enumerate(mergedDataFrames):
fileName = 'C:/Users/Hrihaan/Desktop/A_B_' + str(i+1) + '.txt'
dataFrame.to_csv(fileName, sep='\t', encoding='utf-8')发布于 2017-08-01 17:36:52
如果您只想组合行而不考虑内容,则不需要numpy
import os
def path(dirname, letter, index): # build the absolute path of a single file
return os.path.join(dirname, '{}_{}.txt'.format(letter, index))
d = 'C:/Users/Hrihaan/Desktop'
for i in range(1, 11):
with open(path(d, 'C', i), 'w') as fout, open(
path(d, 'A', i)) as fa, open(path(d, 'B', i)) as fb:
for line_a, line_b in zip(fa, fb):
fout.write(line_a.rstrip('\n') + line_b)这不会在这两个文件之间插入任何分隔符,如果这些是由制表符或逗号分隔的文件,您将需要这样的分隔符。可以在代码的最后一行中添加适当的分隔符,例如:
fout.write(line_a.rstrip('\n') + ' ' + line_b)或者,您可以使用另一种涉及文件实际解析的方法。
发布于 2017-08-01 17:38:57
对于一对文件,首先,将文件A的内容拆分为一行(由换行符'\n'字符拆分),并对文件B执行同样的操作。
然后,对于B文件的每一行,将该行追加到A的对应行中。如果文件A的行数与B文件不同,那么只需用空字符串填充其余的较短的数组,直到它们有相同的行数(因此您可以将其与相应的行连接起来)。
最后,通过'\n'字符加入文件A的行(现在是两个文件行的连接),并对文件B执行同样的操作。
https://stackoverflow.com/questions/45444184
复制相似问题