python - 在Python中水平合并具有不同分隔符和列的CSV的最快方法?

标签 python pandas csv concatenation

我有一个 CSV (file1.csv),其中包含奇怪的数据和分隔符,如下所示:

[Header]
Info1,Info2
Foo1,Foo2
Bar1,Bar2
[Data]
Info3,Info4
Foo3,Foo4

我还可以将其转换为 Pandas DF。

我有第二个文件 (file2.csv),它看起来像传统的 CSV:

Sample,ID,Project_Name,Description
Sample1,Example_ID_1,ProjectFoo,N/A
Sample2,Example_ID_2,ProjectFoo,N/A

我想将这些 CSV(或 Pandas DF 然后合并为 CSV)水平合并到一个输出 CSV 中,如下所示:

[Header]
Info1,Info2
Foo1,Foo2
Bar1,Bar2
[Data]
Info3,Info4
Foo3,Foo4

Sample,ID,Project_Name,Description
Sample1,Example_ID_1,ProjectFoo,N/A
Sample2,Example_ID_2,ProjectFoo,N/A

由于列和分隔符不同,我无法使用 pd.concatpd.merge 合并这两个,并且无法保留我想要的输出 CSV 结构。

我知道在 bash 中我可能可以cat 这两个文件,但是在 Python 中有没有有效的方法来做到这一点?目前,我在 shell 中进行子进程调用,以 cat 我的 Python 脚本中的两个文件,但我不喜欢这两个文件。

有什么想法吗?

最佳答案

由于您没有对数据进行任何处理,只是进行简单的连接,因此您可以读取每个文件并将其写入单个输出文件:

with open('output.csv', 'w') as f_output:
    for fn in ['file1.csv', 'file2.csv']:
        with open(fn) as f_input:
            f_output.write(f_input.read() + '\n')

关于python - 在Python中水平合并具有不同分隔符和列的CSV的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71918019/

相关文章:

python - 带有行号的 pandas 堆栈

python - 如何对类或函数定义进行哈希处理?

Python ASCII 编解码器在写入 CSV 时无法编码字符错误

python - 使用 Python 从 csv 文件创建深度嵌套字典

python - 将 Pandas 与 IN 语句的元组一起使用时转义单引号

带有两个 NULL 字符串的 PostgreSQL COPY CSV

python - 如何从USB运行Python?

python - Numpy Correlate 不提供偏移量

python - 如何统计每天的条目数?

python - 同时基于2列删除python数据集中的重复项