Pandas数据分析面试基础题(十一)

334 阅读2分钟

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))

原创不易,如果小伙伴们觉得有帮助,麻烦点个赞再走呗~

最后,感谢女朋友在工作和生活中的包容、理解与支持 !