# 如何用Python的pandas库函数将相同结构的两张表连接为一张表
# 题目
DataFrame df1
+-------------+--------+
| Column Name | Type |
+-------------+--------+
| student_id | int |
| name | object |
| age | int |
+-------------+--------+
DataFrame df2
+-------------+--------+
| Column Name | Type |
+-------------+--------+
| student_id | int |
| name | object |
| age | int |
+-------------+--------+
编写一个解决方案,将两个 DataFrames 垂直 连接成一个 DataFrame。
结果格式如下示例所示。
示例 1:
输入:
df1
+------------+---------+-----+
| student_id | name | age |
+------------+---------+-----+
| 1 | Mason | 8 |
| 2 | Ava | 6 |
| 3 | Taylor | 15 |
| 4 | Georgia | 17 |
+------------+---------+-----+
df2
+------------+------+-----+
| student_id | name | age |
+------------+------+-----+
| 5 | Leo | 7 |
| 6 | Alex | 7 |
+------------+------+-----+
输出:
+------------+---------+-----+
| student_id | name | age |
+------------+---------+-----+
| 1 | Mason | 8 |
| 2 | Ava | 6 |
| 3 | Taylor | 15 |
| 4 | Georgia | 17 |
| 5 | Leo | 7 |
| 6 | Alex | 7 |
+------------+---------+-----+
解释:
两个 DataFrame 被垂直堆叠,它们的行被合并。
# 解题方案
# 1、审题,理解题意
题目的意思是有两个DataFrame,且有相同的列结构 student_id,name 和 age。想要垂直地连接两个 DataFrame,df1 和 df2。可以使用pandas 内部的一个方便的函数pd.concat()垂直(按行)或水平(按列)连接 DataFrame。
# pd.concat()函数参数
- objs 参数是一个要串联的 Series 或 DataFrame 对象的序列或映射。
- axis 参数决定连接的方向: axis=0 设置为缺省值,这意味着它将垂直(按行)连接 DataFrame。 axis=1 将水平连接 DataFrame(按列)。
# 2、解题思路
对于该题目我们用pd.concat()函数垂直连接 DataFrame,需要确保列的顺序一致。
return pd.concat([df1, df2], axis=0)
- 我们利用 pd.concat() 函数来连接 DataFrames。因为我们连接了 df1 和 df2,所以我们传递列表 [df1,df2] 作为 objs 的第一个参数;
- 由于我们垂直连接,所以我们设置 axis=0。
# 3、代码实现
import pandas as pd
def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:
return pd.concat([df1, df2], axis=0)