将多个CSV文件中的行合并为一个CSV文件,并保持相同的列数。

问题描述 投票:0回答:1

我有3个CSV文件(用','隔开),没有标题,需要将它们合并成一个文件。

file1.csv

United Kingdom     John

file2.csv

France  Pierre

file3.csv

Italy   Marco

预期的结果。

United Kingdom    John
France            Pierre
Italy             Marco

我的代码:

import pandas as pd

df = pd.read_csv('path/to/file1.csv', sep=',')
df1 = pd.read_csv('path/to/file2.csv', sep=',')
df2 = pd.read_csv('path/to/file3.csv', sep=',')

df_combined = pd.concat([df,df1,df2])

df_combined.to_csv('path/to/output.csv')

上面的代码给了我数据合并,但它把我的CSV文件中的行添加为新的列和行,而不是只添加新行到现有的两列。

United Kingdom     John
                          France     Pierre
                                               Italy    Marco

谁能帮忙解决这个问题?先谢谢你

python pandas csv
1个回答
1
投票

Pandas在读取CSV文件时,通常会从第一行推断出列名。在这里你可以做的一件事是检查每个数据帧的头,你应该期望看到样本数据被当作头。

为了覆盖这种默认行为,你可以使用 names 字段来明确指定列名,如 df1=pd.read_csv("file1.csv", names=['country','name']). 那么pandas就可以据此合并列。


1
投票

读取csv的方法如下

df = pd.read_csv('path/to/file1.csv', sep=',', header=None)
df1 = pd.read_csv('path/to/file2.csv', sep=',', header=None)
df2 = pd.read_csv('path/to/file3.csv', sep=',', header=None)

您可以按以下方式连接

df.reset_index(inplace=True, drop=True)
df1.reset_index(inplace=True, drop=True)
df2.reset_index(inplace=True, drop=True)
pd.concat([df,df1,df2], axis=0)

如愿以偿

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.