[英]Merging two .csv files together side by side
更新*****我在Windows上使用awk解决了。 使用此命令可以成功并排添加文件。
call awk -F"\t" "NR==FNR{a[NR]=$1; next} {print a[FNR], $0}" OFS="\t" test1.csv test2.csv
我已经尝试了几种方法,但是仍然无法正常工作,我想这与其中一个文件中的特殊字符有关。 使用paste
工具,很简单。
paste test1.csv test2.csv. > Test3.csv in Linux.
但是我无法访问与此任务相关的任何与Linux相关的内容。
我的环境是Windows 7,安装了Python 2.7(无熊猫)和Perl Strawberry。
我需要将2个(或更多)csv文件并排合并在一起。 文件将始终具有相同的行数。
我已经使用python尝试过了,但是没有用。
我已经尝试使用批处理,但它没有用。
test1.csv包含
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\
test2.csv包含
123456.pdf
123457.pdf
124587.pdf
我想要的输出是(Test3.csv)是一个制表符分隔的文件,其中包含;
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 123456.pdf
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 123457.pdf
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 124587.pdf
任何帮助是极大的赞赏。
谢谢。
这是使用zip
的解决方案。 您可能需要使用定界符并引用字符,具体取决于csv文件的确切设置
with open('test1.csv', 'rb') as t1, open('test2.csv', 'rb') as t2, open('output.csv', 'wb') as output:
r1 = csv.reader(t1, delimiter=' ')
r2 = csv.reader(t2, delimiter=' ')
w = csv.writer(output, delimiter=' ')
for a, b in zip(r1, r2):
w.writerow(a + b)
这是使用pyexcel的另一种更直观的解决方案:
>>> import pyexcel as p
>>> left=p.get_sheet(file_name='left.csv')
>>> left
left.csv:
+------------------------------------------------------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ |
+------------------------------------------------------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ |
+------------------------------------------------------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ |
+------------------------------------------------------------+
>>> right=p.get_sheet(file_name='right.csv')
>>> right
right.csv:
+------------+
| 123456.pdf |
+------------+
| 123457.pdf |
+------------+
| 124587.pdf |
+------------+
>>> left.column+=right # that's it
>>> left
left.csv:
+------------------------------------------------------------+------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 123456.pdf |
+------------------------------------------------------------+------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 123457.pdf |
+------------------------------------------------------------+------------+
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 124587.pdf |
+------------------------------------------------------------+------------+
>>> left.save_as('merged.csv') # save it
对于海量数据集,上述解决方案将很慢或无法完成。 因此,这里是处理庞大数据集的代码:
>>> import pyexcel as p
>>> left=p.iget_array(file_name='left.csv')
>>> right=p.iget_array(file_name='right.csv')
>>> p.isave_as(array=(a+b for a, b in zip(left, right)), dest_file_name='merged.csv')
>>> p.free_resources()
python pyexcel软件包具有pyexcel.cookbook.merge_two_files
(以及用于合并N个文件的pyexcel.cookbook.merge_files
)。
( pip install pyexcel
,请参阅http://docs.pyexcel.org )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.