Pandas基础——合并

本文介绍了Pandas中的数据合并基础知识,包括笛卡尔积概念、数据合并的常用方法如append、assign、combine、update、concat、merge和join的适用场景及示例。此外,还探讨了merge_ordered和merge_asof的特殊用途,它们分别是merge在特定场景下的延伸应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

补充知识

  1. 笛卡尔积:
    笛卡尔积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

知识脑图

在这里插入图片描述

部分代码

1.导入numpy和pandas模块,读取table.csv文件

import numpy as np
import pandas as pd
df = pd.read_csv('data/table.csv')
df.head()

2.append举例

df_append = df.loc[:3,['Gender','Height']].copy()
df_append
s = pd.Series({'Gender':'F','Height':188},name='new_row')
df_append.append(s)

输出结果由:
在这里插入图片描述
变为:
在这里插入图片描述
对于其他的函数这里就不再做补充了,遇到问题查一下文档再解决。

问题

【问题一】 请思考什么是append/assign/combine/update/concat/merge/join各自最适合使用的场景,并举出相应的例子。

append:在原先表的基础上可以用Series增加一行,需指定增加的name;用DataFrame增加表,指定增加的索引;(增加的都是行)

assign:添加列,列名由参数指定,添加一列或者多列;

combine:给定a表和b表,b表填充a表时,以列的顺序逐列添加,

update:默认使用左连接,没有返回值,直接在原先的表上操作,相当于更新操作;

concat:可以在两个维度上拼接,横向或者纵向,默认取拼接的并集,当inner时取交集

merge: merge函数的作用是将两个pandas对象横向合并,遇到重复的索引项时会使用笛卡尔积,默认inner连接,可选left、outer、right连接,可以用on参数指定对象进行连接

join: join函数作用是将多个pandas对象横向拼接,遇到重复的索引项时会使用笛卡尔积,默认左连接,可选inner、outer、right连接

【问题二】 merge_ordered和merge_asof的作用是什么?和merge是什么关系?

merge_ordered: 组合时间或者其他有序序列数据

merge_asof: 类似于左连接,对于左侧DataFrame中的每一行,选择on值对应小于left值的最后一行,两个DataFrame必须按键排序

都是merge的特殊情况

待续

### 如何使用 Pandas 合并数据表 #### 方法一:使用 `merge` 函数 `merge` 是一种基于键的连接操作,类似于 SQL 中的 JOIN 操作。此函数可以执行内联接、左外联接、右外联接以及全外联接。 ```python import pandas as pd # 创建两个示例 DataFrame df1 = pd.DataFrame({ 'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'key': ['K0', 'K1', 'K2', 'K3'] }) df2 = pd.DataFrame({ 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3'], 'key': ['K0', 'K1', 'K2', 'K4'] # K4 不在 df1 中 }) merged_df = pd.merge(df1, df2, on='key') print(merged_df) ``` 上述代码展示了如何根据共同的关键字字段合并两个表格[^1]。 #### 方法二:使用 `concat` 函数 当希望沿轴方向堆叠不同的 DataFrame 或 Series 对象时,可采用 `concat` 方式。这种方式适用于水平或垂直拼接多个对象。 ```python # 假设有三个具有相同结构的数据框 frames = [pd.DataFrame({'A': range(i, i + 3)}) for i in range(0, 9, 3)] concated_df = pd.concat(frames, ignore_index=True) print(concated_df) # 如果想要按列组合,则需指定 axis 参数为 1 horizontal_concatenation = pd.concat([df1, df2], axis=1) print(horizontal_concatenation) ``` 这里介绍了两种不同模式下的连接方式——纵向和横向。 #### 方法三:使用 `join` 方法 对于索引对齐的操作来说,`join` 更加直观易懂。默认情况下,它会尝试匹配左侧 DataFrames 的索引来加入右侧的内容。 ```python left = pd.DataFrame({ 'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']}, index=['K0', 'K1', 'K2']) right = pd.DataFrame({ 'C': ['C0', 'C2', 'C3'], 'D': ['D0', 'D2', 'D3']}, index=['K0', 'K2', 'K3']) joined_df = left.join(right) print(joined_df) ``` 这段代码片段解释了如何利用索引来进行两者的关联。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值