每日一题10:Pandas:重塑数据-联结

一、每日一题

DataFrame 
df
+-------------+--------+
| Column Name | Type   |
+-------------+--------+
| student_id  | int    |
| name        | object |
| age         | int    |
+-------------+--------+

DataFrame 
df
+-------------+--------+
| 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   |
+------------+---------+-----+

解答:

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

  • 33
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值