Appearance
数据合并
数据合并是将多个数据集组合在一起的操作,Pandas 提供了多种合并方式。
纵向合并
python
import pandas as pd
df1 = pd.DataFrame({
'姓名': ['张三', '李四'],
'年龄': [25, 30]
})
df2 = pd.DataFrame({
'姓名': ['王五', '赵六'],
'年龄': [35, 28]
})
# 纵向合并
df_concat = pd.concat([df1, df2], ignore_index=True)
print(df_concat)横向合并
python
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35]
})
df2 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'城市': ['北京', '上海', '广州']
})
# 横向合并
df_concat = pd.concat([df1, df2], axis=1)
print(df_concat)数据库风格的合并
内连接
python
df1 = pd.DataFrame({
'员工ID': ['A001', 'A002', 'A003'],
'姓名': ['张三', '李四', '王五']
})
df2 = pd.DataFrame({
'员工ID': ['A001', 'A002', 'A004'],
'部门': ['技术', '销售', '市场']
})
# 内连接(只保留两边都有的)
df_merge = pd.merge(df1, df2, on='员工ID', how='inner')
print(df_merge)左连接
python
# 左连接(保留左边所有数据)
df_merge = pd.merge(df1, df2, on='员工ID', how='left')
print(df_merge)右连接
python
# 右连接(保留右边所有数据)
df_merge = pd.merge(df1, df2, on='员工ID', how='right')
print(df_merge)外连接
python
# 外连接(保留所有数据)
df_merge = pd.merge(df1, df2, on='员工ID', how='outer')
print(df_merge)多键合并
python
df1 = pd.DataFrame({
'姓名': ['张三', '张三', '李四'],
'年份': [2023, 2024, 2023],
'销售额': [100, 120, 80]
})
df2 = pd.DataFrame({
'姓名': ['张三', '张三', '李四'],
'年份': [2023, 2024, 2023],
'目标': [90, 110, 85]
})
# 多键合并
df_merge = pd.merge(df1, df2, on=['姓名', '年份'])
print(df_merge)处理重复列名
python
df1 = pd.DataFrame({
'ID': [1, 2],
'值': [100, 200]
})
df2 = pd.DataFrame({
'ID': [1, 2],
'值': [300, 400]
})
# 添加后缀区分
df_merge = pd.merge(df1, df2, on='ID', suffixes=('_左', '_右'))
print(df_merge)索引合并
python
df1 = pd.DataFrame({
'姓名': ['张三', '李四']
}, index=[1, 2])
df2 = pd.DataFrame({
'部门': ['技术', '销售']
}, index=[1, 2])
# 按索引合并
df_merge = pd.merge(df1, df2, left_index=True, right_index=True)
print(df_merge)
# 或使用join
df_join = df1.join(df2)
print(df_join)追加数据
python
df1 = pd.DataFrame({
'A': [1, 2],
'B': [3, 4]
})
df2 = pd.DataFrame({
'A': [5, 6],
'B': [7, 8]
})
# 追加数据
df_appended = df1._append(df2, ignore_index=True)
print(df_appended)数据合并是数据处理中的常见操作,选择合适的合并方式可以高效地整合数据。