一、每日一题
DataFrame df +-------------+--------+ | Column Name | Type | +-------------+--------+ | student_id | int | | name | object | | age | int | +-------------+--------+ DataFrame df +-------------+--------+ | Column Name | Type | +-------------+--------+ | student_id | int | | name | object | | age | int | +-------------+--------+
示例 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 | +------------+---------+-----+
解答:
import pandas as pd
def concatenateTables(df1: pd.DataFrame, df2: pd.DataFrame) -> pd.DataFrame:
result_df = pd.concat([df1, df2], ignore_index=True)
return result_df
题源:力扣
二、总结
concat()
是 Pandas 中一个非常强大的函数,用于沿着一个轴(行或列)组合多个对象(主要是 DataFrame 和 Series)。下面是 concat()
函数的基本用法、参数和一些示例。
基本语法
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
sort=None, copy=True)
参数说明
-
objs: 必需参数,一个列表或元组,包含了要组合的DataFrame或Series对象。
-
axis: 指定连接的轴,可以是
0
(默认值,垂直连接,行方向)或1
(水平连接,列方向)。 -
join: 指定如何处理其他轴上的索引,可以是
'inner'
(交集)或'outer'
(并集,默认值)。 -
ignore_index: 布尔值,默认为
False
。如果设置为True
,则在连接后重置索引。 -
keys: 一个可选的序列,用于构建分层索引或多级列名。
-
levels: 与
keys
配合使用,手动指定分层索引的级别。 -
names: 为结果的轴上的分层索引设置名称。
-
verify_integrity: 检查新轴是否包含重复项,
True
表示检查,默认为False
。 -
sort: 在连接多索引时控制排序行为,
None
(默认)表示不排序,保留输入顺序;True
表示按索引排序。 -
copy: 默认为
True
,总是创建数据的副本。如果设置为False
,可能会重用输入数据,具体取决于所使用的数据和操作。
示例
1. 垂直连接(行方向)
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
# 垂直堆叠两个DataFrame
result = pd.concat([df1, df2])
print(result)
A B
0 1 3
1 2 4
0 5 7
1 6 8
2.水平连接(列方向)
df3 = pd.DataFrame({'C': [9, 10]}, index=[0, 1])
# 水平堆叠,注意调整axis参数
result = pd.concat([df1, df3], axis=1)
print(result)
A B C
0 1 3 9
1 2 4 10
3.使用keys创建层次化索引
result_with_keys = pd.concat([df1, df2], keys=['df1', 'df2'])
print(result_with_keys)
A B
df1 0 1 3
1 2 4
df2 0 5 7
1 6 8
2024.5.13