Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
试题:如何对 DataFrame 数据进行连接?
(难度:medium)
分析
在 Pandas 中通过concat()函数用于沿某个特定的轴执行连接操作,函数的语法格式如下:
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False)
参数说明如下:
objs:Series、DataFrame对象。axis:表示在哪个轴方向上(行或者列)进行连接操作,默认为0,表示行方向。join: 指定连接方式,取值有"inner","outer",默认为outer表示取并集,inner表示取交集。ignore_index:布尔值参数,默认为 False,如果为 True,表示不在连接的轴上使用索引。join_axes:表示索引对象的列表。
具体使用如下,创建两个不同的 DataFrame 并对其执行连接操作:
import pandas as pd
a = pd.DataFrame({
'stu_no':[1,2,3,4,5],
'name': ['Zhangyi', 'Zhanger', 'Zhangsan', 'Zhangsi', 'Zhangwu'],
'score':[90,87,76,60,68]})
b = pd.DataFrame({
'stu_no':[6,7,8,9,10],
'name': ['Zhangliu', 'Zhangqi', 'Zhangba', 'Zhangjiu', 'Zhangshi'],
'score':[88,85,65,91,65]})
print(a)
print(b)
输出如下:
stu_no name score
0 1 Zhangyi 90
1 2 Zhanger 87
2 3 Zhangsan 76
3 4 Zhangsi 60
4 5 Zhangwu 68
stu_no name score
0 6 Zhangliu 88
1 7 Zhangqi 85
2 8 Zhangba 65
3 9 Zhangjiu 91
4 10 Zhangshi 65
连接a与b:
print(pd.concat([a,b]))
结果输出如下:
stu_no name score
0 1 Zhangyi 90
1 2 Zhanger 87
2 3 Zhangsan 76
3 4 Zhangsi 60
4 5 Zhangwu 68
0 6 Zhangliu 88
1 7 Zhangqi 85
2 8 Zhangba 65
3 9 Zhangjiu 91
4 10 Zhangshi 65
可以看出行索引 index 存在重复的现象,如果想让输出的行索引遵循依次递增的规则,将 ignore_index设置为 True即可。
print(pd.concat([a,b], ignore_index=True))
如果想要在列方向上进行连接,设置参数axis=1即可,将会添加新的列。
print(pd.concat([a,b], axis=1))
扩展
还有一个方便快捷的append()方法,可以在行方向上进行连接,和列表的append()方法功能类似:
print(a.append(b))
原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~
最后,感谢女朋友在工作和生活中的包容、理解与支持 !