繁体   English   中英

并排合并两个.csv文件

[英]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尝试过了,但是没有用。

在python中并排连接txt文件

我已经尝试使用批处理,但它没有用。

使用批处理文件并排合并csv文件

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM