下面详细讲解一下用pandas按列合并两个文件的实例,包括以下内容:
- 导入模块
- 首先读取要合并的两个文件(csv格式)
- 确认两个文件要合并的列
- 合并两个文件
- 示例说明
导入模块
在使用pandas时,我们需要先导入pandas和numpy两个模块:
import pandas as pd
import numpy as np
首先读取要合并的两个文件
我们先用pandas中的read_csv方法读取要合并的两个文件:
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
确认两个文件要合并的列
我们需要确认要合并的两个文件的重叠列是哪一列。例如,如果我们要将两个文件按照列“ID”合并,那么我们需要先确认这个列在两个文件中的列名是一致的。可以用以下代码确认:
print(df1.columns)
print(df2.columns)
这里假设两个文件列名一致。
合并两个文件
确定要合并的列之后,我们就可以用pandas中的merge方法将两个文件合并,例如:
merged = pd.merge(df1, df2, on='ID')
上述代码表示按照“ID”列合并df1和df2两个DataFrame。如果两个DataFrame中ID列有缺失,那么就会对应生成缺失值NaN。
示例说明
为了更好地说明merge方法的使用,下面给出两个示例。
示例一
首先,创建两个今天与昨天出售商品的销售数据记录文件:
- file1.csv:
ID,销售量
001,100
002,200
003,300
- file2.csv:
ID,销售量
004,150
005,250
006,350
导入两个文件:
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
确认两个文件要合并的列是“ID”,合并两个文件:
merged = pd.merge(df1, df2, on='ID')
输出结果如下:
ID,销售量_x,销售量_y
0 001,100,NaN
1 002,200,NaN
2 003,300,NaN
3 004,NaN,150
4 005,NaN,250
5 006,NaN,350
我们可以发现,在合并两个文件时,如果两个文件中的ID并不完全重叠,则合并完成后的结果中会出现缺失值。
示例二
现在我们有两个文件,一个包含全国各省份的GDP统计数据,一个包含全国各省份的人口统计数据,我们希望将这两个文件按照省份列“Province”合并到一起。
- file1.csv:
Province,GDP
北京市,30320.83
天津市,18809.64
河北省,36010.27
- file2.csv:
Province,Population
北京市,2154.20
天津市,1560.00
河北省,7556.20
导入两个文件:
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
确认两个文件要合并的列是“Province”,合并两个文件:
merged = pd.merge(df1, df2, on='Province')
输出结果如下:
Province,GDP,Population
0 北京市,30320.83,2154.20
1 天津市,18809.64,1560.00
2 河北省,36010.27,7556.20
可以看到,按Province列合并时,两个文件都有共同的省份名称,因此合并后结果中并没有缺失值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用pandas按列合并两个文件的实例 - Python技术站