pandas系列之表的纵向拼接

664 阅读4分钟

表的纵向拼接是将两个表依据公共列在水平方向上进行拼接,而纵向拼接是在垂直方向上进行拼接

本文所用表格内容如下:

生活用品表:

image-20210801134440638.png

图书信息表:

image-20210801132535764.png

先来看一下两个表的数据情形

import pandas as pd
​
​
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
print(life_df)

result:

      分类  编号    名称
0     水果   0    苹果
1     水果   1    橙子
2   生活用品   2    牙刷
3   生活用品   3    冰箱
4   生活用品   4   电视机
5     食物   0    苹果
6     食物   1    橙子
7     家电   3    冰箱
8     家电   4   电视机
9     大件   3    冰箱
10    大件   4   电视机
11    大件   5    茶几
12  生活用品   7  暖手宝宝
13  小说   8   红楼梦
book_df = pd.read_excel(r'C:\Users\admin\Desktop\图书信息表.xlsx')
print(book_df)

result:

   分类  编号     名称
0  传记   1   朱元璋传
1  文学   2     沙丘
2  文学   3  平凡的世界
3  历史   4   资治通鉴
4  传记   5   曾国藩传
5  小说   6  世纪三部曲
6  历史   7    三国志
7  小说   8    红楼梦

1.普通合并

普通合并就是直接将待合并列表的表名以列表的形式传给pd.concat()方法即可完成合并。其合并效果展示如下:

import pandas as pd
​
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
book_df = pd.read_excel(r'C:\Users\admin\Desktop\图书信息表.xlsx')
new_df = pd.concat([life_df, book_df])
print(new_df)

result:

      分类  编号     名称
0     水果   0     苹果
1     水果   1     橙子
2   生活用品   2     牙刷
3   生活用品   3     冰箱
4   生活用品   4    电视机
5     食物   0     苹果
6     食物   1     橙子
7     家电   3     冰箱
8     家电   4    电视机
9     大件   3     冰箱
10    大件   4    电视机
11    大件   5     茶几
12  生活用品   7   暖手宝宝
13    小说   8    红楼梦
0     传记   1   朱元璋传
1     文学   2     沙丘
2     文学   3  平凡的世界
3     历史   4   资治通鉴
4     传记   5   曾国藩传
5     小说   6  世纪三部曲
6     历史   7    三国志
7     小说   8    红楼梦

2.索引设置

观察普通合并的效果,我们可以发现,普通合并后默认保留原表的索引,合并后的索引编号就会从0到13再从0到7.这时我们可以通过gnore_index=True来设置生成一组新的索引,而不保留原来的索引。效果展示如下:

import pandas as pd
​
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
book_df = pd.read_excel(r'C:\Users\admin\Desktop\图书信息表.xlsx')
new_df = pd.concat([life_df, book_df], ignore_index=True)
print(new_df)

result:

      分类  编号     名称
​
0     水果   0     苹果
1     水果   1     橙子
2   生活用品   2     牙刷
3   生活用品   3     冰箱
4   生活用品   4    电视机
5     食物   0     苹果
6     食物   1     橙子
7     家电   3     冰箱
8     家电   4    电视机
9     大件   3     冰箱
10    大件   4    电视机
11    大件   5     茶几
12  生活用品   7   暖手宝宝
13    小说   8    红楼梦
14    传记   1   朱元璋传
15    文学   2     沙丘
16    文学   3  平凡的世界
17    历史   4   资治通鉴
18    传记   5   曾国藩传
19    小说   6  世纪三部曲
20    历史   7    三国志
21    小说   8    红楼梦

3.重叠数据合并

当合并后的结果有重复记录时,可以使用drop_duplicates()进行去重,其效果展示如下:

import pandas as pd
​
life_df = pd.read_excel(r'C:\Users\admin\Desktop\生活用品表.xlsx')
book_df = pd.read_excel(r'C:\Users\admin\Desktop\图书信息表.xlsx')
new_df = pd.concat([life_df, book_df], ignore_index=True).drop_duplicates()
print(new_df)

result:

  分类  编号     名称
​
0     水果   0     苹果
1     水果   1     橙子
2   生活用品   2     牙刷
3   生活用品   3     冰箱
4   生活用品   4    电视机
5     食物   0     苹果
6     食物   1     橙子
7     家电   3     冰箱
8     家电   4    电视机
9     大件   3     冰箱
10    大件   4    电视机
11    大件   5     茶几
12  生活用品   7   暖手宝宝
13    小说   8    红楼梦
14    传记   1   朱元璋传
15    文学   2     沙丘
16    文学   3  平凡的世界
17    历史   4   资治通鉴
18    传记   5   曾国藩传
19    小说   6  世纪三部曲
20    历史   7    三国志