我有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
谁能帮忙解决这个问题?先谢谢你
Pandas在读取CSV文件时,通常会从第一行推断出列名。在这里你可以做的一件事是检查每个数据帧的头,你应该期望看到样本数据被当作头。
为了覆盖这种默认行为,你可以使用 names
字段来明确指定列名,如 df1=pd.read_csv("file1.csv", names=['country','name'])
. 那么pandas就可以据此合并列。
读取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)
如愿以偿