Appearance
数据连接
数据连接是合并数据的重要方式,Pandas 提供了灵活的连接操作。
基础连接
python
import pandas as pd
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
}, index=[0, 1, 2])
df2 = pd.DataFrame({
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']
}, index=[0, 1, 2])
# 按索引连接
df_join = df1.join(df2)
print(df_join)不同索引的连接
python
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2']
}, index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({
'B': ['B0', 'B1', 'B2']
}, index=['K0', 'K2', 'K3'])
# 左连接(默认)
df_join = df1.join(df2)
print(df_join)
# 右连接
df_join = df1.join(df2, how='right')
print(df_join)
# 外连接
df_join = df1.join(df2, how='outer')
print(df_join)
# 内连接
df_join = df1.join(df2, how='inner')
print(df_join)多表连接
python
df1 = pd.DataFrame({
'A': ['A0', 'A1']
}, index=[0, 1])
df2 = pd.DataFrame({
'B': ['B0', 'B1']
}, index=[0, 1])
df3 = pd.DataFrame({
'C': ['C0', 'C1']
}, index=[0, 1])
# 连接多个表
df_join = df1.join([df2, df3])
print(df_join)列名冲突处理
python
df1 = pd.DataFrame({
'值': [1, 2]
}, index=[0, 1])
df2 = pd.DataFrame({
'值': [3, 4]
}, index=[0, 1])
# 使用lsuffix和rsuffix
df_join = df1.join(df2, lsuffix='_左', rsuffix='_右')
print(df_join)与merge的区别
python
df1 = pd.DataFrame({
'键': ['K0', 'K1', 'K2'],
'A': ['A0', 'A1', 'A2']
})
df2 = pd.DataFrame({
'键': ['K0', 'K1', 'K2'],
'B': ['B0', 'B1', 'B2']
})
# join需要设置列为索引
df_join = df1.set_index('键').join(df2.set_index('键'))
print(df_join)
# merge直接指定键
df_merge = pd.merge(df1, df2, on='键')
print(df_merge)实际应用示例
python
# 员工信息表
employees = pd.DataFrame({
'员工ID': ['E001', 'E002', 'E003'],
'姓名': ['张三', '李四', '王五']
}).set_index('员工ID')
# 部门信息表
departments = pd.DataFrame({
'员工ID': ['E001', 'E002', 'E004'],
'部门': ['技术', '销售', '市场']
}).set_index('员工ID')
# 工资信息表
salaries = pd.DataFrame({
'员工ID': ['E001', 'E002', 'E003'],
'工资': [8000, 6000, 7000]
}).set_index('员工ID')
# 连接多个表
df_result = employees.join([departments, salaries], how='left')
print(df_result)join操作在处理索引对齐的数据时非常方便,是数据整合的重要工具。