Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何逐行合并两个csv文件_Python_Csv - Fatal编程技术网

Python 如何逐行合并两个csv文件

Python 如何逐行合并两个csv文件,python,csv,Python,Csv,我正在windows中使用python 3.0 我有2个csv文件 file1.csv 0, 10,12 0,11,12 1,15,12 2, 17,12 文件2.csv 0, 2, 1 1,22, 1 3, 11, 1 output.csv 0, 10,12 0,11,12 0, 2, 1 1,15,12 1,22, 1 2, 17,12 3, 11, 1 我尝试了以下代码 a = pd.read_csv('file1.csv') b = pd.read_csv('file2.csv')

我正在windows中使用python 3.0

我有2个csv文件

file1.csv

0, 10,12
0,11,12
1,15,12
2, 17,12
文件2.csv

0, 2, 1
1,22, 1
3, 11, 1
output.csv

0, 10,12
0,11,12
0, 2, 1
1,15,12
1,22, 1
2, 17,12
3, 11, 1
我尝试了以下代码

a = pd.read_csv('file1.csv')
b = pd.read_csv('file2.csv')
c = pd.concat([a, b], join='outer')
c.to_csv("Output.csv", index = False)
但我的输出是

0, 10,12
0,11,12
1,15,12
2, 17,12
0, 2, 1
1,22, 1
3, 11, 1

你能给我一些指点吗。我是python新手。

您可以使用pandas对它们进行连接和排序:

df = pd.concat([a, b]).astype('str')

df = df.sort_values(list(df.columns))

df.to_csv('Output.csv', index=False)

这不会创建输出文件,但它演示了如何帮助:

from heapq import merge
inputs = [file(f) for f in ['file1.csv', 'file2.csv']]
for line in merge(*inputs):
    print line,
这将产生样本数据

0, 10,12
0, 2, 1
0,11,12
1,15,12
1,22, 1
2, 17,12
3, 11, 1
但是,在初始行的顺序上,这与样本输出不同:

0, 10,12
0,11,12
0, 2, 1
但我不知道如何制作这种订单。示例输出行似乎没有按字符或数字列排序(字段的数字排序可能会将
0,2,1
放在第一位)

编辑:行的顺序似乎与不存在空格一样。下面是一个例子:

from heapq import merge
def reader(f):
    for line in file(f):
        yield line.replace(' ',''), line
inputs = [reader(f) for f in ['file1.csv', 'file2.csv']]
for pair in merge(*inputs):
    print pair[1],
生成此订单:

0, 10,12
0,11,12
0, 2, 1
1,15,12
1,22, 1
2, 17,12
3, 11, 1

逻辑是什么?这些行应该如何排序?所以你想把它们并排排列?我用
\u array=np.genfromtxt('input\u filename.csv',delimiter=',')
阅读,将它们与
out=np.hstack([left\u array,right\u array])
并排放置,然后用
np.savetxt('output\u filename.csv',out,delimiter=',')编写文件。
。您还可以在
savetxt
中指定格式,请参阅文档。请注意,只有当两个输入具有相同的行数(示例数据中的情况并非如此)时,此功能才起作用。请更清楚地说明你想做什么(陈述想法以及给定的输入和预期的输出)。你的输出正确吗?看起来您几乎想要交错这两个文件,但不清楚为什么文件之间的模式是1,1,2,1,2,1,2。