Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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_Append - Fatal编程技术网

Python:合并具有不同标题的csv数据

Python:合并具有不同标题的csv数据,python,csv,append,Python,Csv,Append,我有一堆软件输出文件,我已经将它们处理成类似csv的文本文件。我可能已经很难做到这一点,因为我对python库不太熟悉 下一步是将所有这些数据收集到一个csv文件中。这些文件有不同的标题,或者排序不同 假设这是一个文件: A | B | C | D | id 0 2 3 2 "A" ... 这是文件B: B | A | Z | D | id 4 6 1 0 "B" ... 我希望append.csv文件如下所示: A | B | C | D | Z | id

我有一堆软件输出文件,我已经将它们处理成类似csv的文本文件。我可能已经很难做到这一点,因为我对python库不太熟悉

下一步是将所有这些数据收集到一个csv文件中。这些文件有不同的标题,或者排序不同

假设这是一个文件:

A | B | C | D | id 
0   2   3   2   "A"
...
这是文件B:

B | A | Z | D | id
4   6   1   0   "B"
...
我希望append.csv文件如下所示:

A | B | C | D | Z | id
0   2   3   2       "A"
6   4       0   1   "B"
...

我怎样才能优雅地做到这一点?感谢您的所有回答。

您可以使用
pandas
将CSV文件读入数据帧,并使用
concat
方法,然后将结果写入CSV:

将熊猫作为pd导入
df1=pd.read\u csv(“file1.csv”)
df2=pd.read\u csv(“file2.csv”)
df=pd.concat([df1,df2],轴=0,忽略索引=True)
df.to_csv(“file.csv”,index=False)
标准库中的模块提供了可用于执行此操作的工具。该类为csv文件中的每一行生成列名到值的映射;该类将把此类映射写入csv文件

DictWriter
必须提供列名列表,但不要求所有列名都出现在每一行映射中

import csv

list_of_files = ['1.csv', '2.csv']

# Collect the column names.
all_headers = set()
for file_ in list_of_files:
    with open(file_, newline='') as f:
        reader = csv.reader(f)
        headers = next(reader)
        all_headers.update(headers)
all_headers = sorted(all_headers)

# Generate the output file.
with open('append.csv', 'w', newline='') as outfile:
    writer = csv.DictWriter(outfile, fieldnames=all_headers)
    writer.writeheader()
    for file_ in list_of_files:
        with open(file_, newline='') as f:
            reader = csv.DictReader(f)
            writer.writerows(reader)
$cat append.csv
A、 B,C,D,Z,id
0,2,3,2,A
6,4,0,1,B

但是它应该基于列名追加
pd。concat
隐式地基于列名追加,不是吗?