合并与变形

目录

合并

准备数据

append关键字

concat关键字

merge关键字

join关键字

变形

df.T行列转置

 透视表


合并

很多情况下需要将多个df合并为一个新的df

  • df1.append(df2) 纵向合并数据集

  • pd.concat([df1, df2, ...]) 横向或纵向合并数据集,df1和df2可以没有任何关系, 根据行索引和列名相同合并

  • df1.merge(df2) 横向合并, df1和df2要有关联的列, 类似SQL中的表关联操作

  • df1.join(df2) 横向合并,df1和df2要有相同的索引值才能关联

 准备数据

1 ) df1

import pandas as pd

df1 = pd.DataFrame([[1, 2, 3], [1, 10, 20], [5, 6, 7], [3, 9, 0], [8, 0, 3]], columns=['x1', 'x2', 'x3'])
df1

2) df2

df2 = pd.DataFrame([[1, 2], [1, 10], [1, 3], [4, 6], [3, 9]], columns=['x1', 'x4'])
df2

append关键字

df.append()函数纵向连接其他df重置索引返回新的df

1) 索引不改变

df1.append(df2)

2) 改变索引

df1.append(df2, ignore_index=True)
# append 类似与 union all

concat关键字

  • pd.concat()函数纵向连接多个数据集,N个df从上到下一个摞一个:

    • 不使用join='inner'参数,数据会堆叠在一起,列名相同的数据会合并到一列,合并后不存在的数据会用NaN填充

    • 使用join='inner'参数,只保留数据中的共有部分

  • pd.concat(axis=1)函数横向连接多个数据集,N个df从左到右一个挨着一个:

    • 匹配各自行索引,缺失值用NaN表示

    • 使用join='inner'参数,只保留索引匹配的结果

1) 纵向连接,全部数据都保留

# 纵向连接,全部数据都保留
pd.concat([df1, df2])

2)  纵向连接,只保留共有数据

# 纵向连接,只保留共有数据
pd.concat([df1, df2], join='inner')

3)  横向连接,全部数据都保留

# 横向连接,全部数据都保留
pd.concat([df1, df2], axis=1)

4)  横向连接,保留索引值匹配的数据

# 横向连接,保留索引值匹配的数据
pd.concat([df1, df2], join='inner', axis=1)

merge关键字

merge函数能够将df1合并指定列的df2返回新的df

# 写法1 df1.merge(df2, on='列名', how='固定值')

# 写法2 pd.merge(df1, df2, on='列名', how='固定值')

  • merge函数有2种常用参数,参数说明如下

    • 参数on='列名',表示基于哪一列的列值进行合并操作

    • 参数how='固定值',表示合并后如何处理行索引,固定参数具体如下:

      • how='left' 对应SQL中的left join,保留左侧表df1中的所有数据

      • how='right' 对应SQL中的right join,保留右侧表df2中的所有数据

      • how='inner' 对应SQL中的inner,只保留左右两侧df1和df2都有的数据

      • how='outer' 对应SQL中的join,保留左右两侧侧表df1和df2中的所有数据

1) left左连接

pd.merge(df1, df2, how='left', on='x1')

2) right右连接

pd.merge(df1, df2, how='right', on='x1')

3) inner内连接

pd.merge(df1, df2, how='inner', on='x1')

4)outer外连接

pd.merge(df1, df2, how='outer', on='x1')

join关键字

join横向合并索引值相同的多个数据集;通过 lsuffixrsuffix两个参数分别指定左表和右表相同的列名后缀,how参数的用法与merge函数的how参数用法一致
df1.join(df2, lsuffix='_df1的列名后缀', rsuffix='_df2的列名后缀', how='outer')

变形

  • df.T

  • 透视表pivot

    • pd.pivot_table

df.T行列转置

import pandas as pd
 
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df1 = pd.DataFrame(data)

print("原始数据:")
print(df1)


transposed_df = df1.T
print("转置后:")
print(transposed_df)

假设有一个销售数据的数据框df,包含不同地区在不同季度的销售数量。

import pandas as pd

data = {'地区': ['北京', '上海', '广州'],
        'Q1': [100, 120, 90],
        'Q2': [110, 130, 95],
        'Q3': [105, 125, 100],
        'Q4': [115, 135, 105]}

df = pd.DataFrame(data)
print("原始数据:")
print(df)

transposed_df = df.T
print("转置后的数据:")
print(transposed_df)

 透视表

数据透视表就是基于原数据表、按照一定规则呈现汇总数据,转换各个维度去观察数据;和excel的透视表在数据呈现上功能相同
df.pivot_table(
    index='列名1', 
    columns='列名2',
    values='列名3', 
    aggfunc='内置聚合函数名',
    margins=True # 默认是False, 如果为True,就在最后一行和最后一列,按行按列分别执行aggfunc参数规定的聚合函数
)
  • 使用说明:以列名1作为索引,根据列名2进行分组,对列名3使用pandas内置的聚合函数进行计算,返回新的df对象

  • 参数说明:

    • index:返回df的行索引,并依据其做分组;传入原始数据的列名

    • columns:返回df的列索引;传入原始数据的列名,根据该列做分组

    • values: 要做聚合操作的原始数据的列名

    • aggfunc:内置聚合函数名字符串

1)  准备数据

df4 = pd.read_csv("../data/d_uniqlo.csv")
df5 = df4.query('销售渠道 == "线下"')
print(df5.head())

2)  构建透视表 

df5.pivot_table(
        index = '城市',
        columns = '产品名称',
        values = '销售金额',
        aggfunc = 'sum'
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892785.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业微信开放平台注册流程

目录 网址 注册步骤 准备工作 填写信息 微信认证 填写发票 支付费用 完成注册 网址 微信开放平台: https://open.weixin.qq.com/ 注册步骤 准备工作 企业版: 没有注册过微信其他平台(如:微信小程序,微信公众…

澳鹏干货 | 大语言模型的上下文窗口 (Context Windows)

大语言模型(LLMs)极大地提升了人工智能在理解和生成文本方面的能力。其中一个影响其效用的重要方面是“上下文窗口”(Context Windows)—— 这个概念直接影响着模型接收和生成语言的有效性。 本期澳鹏干货将深入探讨上下文窗口对…

【MySQL】增删改查-进阶(一)

目录 🌴数据库约束 🚩约束类型 🚩NOT NULL 🚩UNIQUE 🚩DEFAULT 🚩PRIMARY KEY 🚩FOREIGN KEY 🚩CHECK 🎄表的设计 🚩一对一 🚩一对多 …

JavaWeb合集07-MyBatis

七、MyBatis MyBatis是一款优秀的持久层(dao)框架,用于简化JDBC的开发。 MyBatis本是Apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 官网:https://mybati…

人工智能学习框架的探索与应用

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

Spark:DataFrame介绍及使用

1. DataFrame详解 DataFrame是基于RDD进行封装的结构化数据类型,增加了schema元数据,最终DataFrame类型在计算时,还是转为rdd计算。DataFrame的结构化数据有Row(行数据)和schema元数据构成。 Row 类型 表示一行数据 …

中文情感分析课程设计

中文情感分析 中文情感分析的实质是文本分类问题,本项目分别采用CNN和BI-LSTM两种模型解决文本分类任务,并用于情感分析,达到不错的效果。 两种模型在小数据集上训练,在验证集的准确率、号回率及F1因子均接近90% 项目设计的目标…

短链接能有多短?颠覆你的认知

在我们平时的网络活动中,经常会遇到需要将长链接缩短的情况。有细心的小伙伴会发现,平时收到的短信里面都会携带一个很短的链接,这就是将长链接缩短之后的效果。 缩短链接的主要目的有两个:一是使链接更加简洁美观;二…

基于SSM的网上拍卖平台

文未可获取一份本项目的java源码和数据库参考。 1. 选题背景 网络在人们的日常生活所占的比重越来越重,人们对网络信息的依赖性也越来越高。为用户提供良好的网络服务,可以给用户带来便捷的同时,也为网络服务开发商带来了客观的收益。当前&…

4-20mA采集卡 USB温度采集卡 USB热电偶采集 USB5601多功能采集卡

阿尔泰科技 型号:USB5601 概述: 产品外形图: 外形尺寸图: 主要指标: 8 路差分模拟量采集、8 路隔离数字量输入和 8 路隔离数字量输出 要了解更多技术和产品知识关注我吧!

最大公共子序列c++

最大公共子序列c 概念基本的概念 递归算法代码优化map基础优化代码 概念 基本的概念 子序列: 由原序列中若干个元素组成,元素可以不连续,但和原序列的顺序一致。最长公共子序列: 一个序列即是甲序列的子序列,也是乙序…

DNDC模型下载与安装;土壤碳储量;点尺度和区域尺度模拟;气象数据、土地数据、土壤数据处理、农田减排潜力分析、温室气体排放分析等

实现美丽中国建设目标,“双碳”行动将会发挥非常重要的作用。碳循环的精确模拟是实现“双碳”行动的关键。DNDC(Denitrification-Decomposition,反硝化-分解模型)是目前国际上最为成功的模拟生物地球化学循环的模型之一&#xff0…

spark:Structured Streaming介绍

文章目录 1. Structured Streaming介绍1.1 实时计算和离线计算1.1.1 实时计算1.1.2 离线计算 1.2 有界和无界数据 2. 简单使用3. 编程模型4. 数据处理流程4.1 读取数据Source4.1.1 文件数据处理 4.2 计算操作 Operation4.3 数据输出 Sink4.3.1 输出模式4.3.2 指定输出位置4.3.3…

Html/Vue浏览器下载并重命名文件

Html/Vue浏览器下载并重命名文件 row是上方图片的数据对象 download(row) {const link document.createElement(a);link.style.display none;// 设置下载地址link.setAttribute(href, row.url);// 设置文件名(这里可以重新设置名字,下载之后的文件就是你重新命名…

【数据结构与算法】链表(上)

记录自己所学&#xff0c;无详细讲解 无头单链表实现 1.项目目录文件 2.头文件 Slist.h #include <stdio.h> #include <assert.h> #include <stdlib.h> struct Slist {int data;struct Slist* next; }; typedef struct Slist Slist; //初始化 void SlistI…

死锁和活锁和线程饥饿

死锁 死锁是指两个或两个以上的线程在执行过程中&#xff0c;因争夺资源而造成的一种相互等待的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。 原因&#xff1a;两个或两个以上的线程共同访问两个或多个相同的资源&#xff08;如对象锁&#xff09;&#…

Unity使用TriangleNet参考

TriangleNet下载如下&#xff1a; TriangleNet 效果如下&#xff1a; 代码参考如下&#xff1a; using System.Collections.Generic; using UnityEngine; using TriangleNet.Geometry;public class TestTriangleNet : MonoBehaviour {[SerializeField]Material material;voi…

耳夹式耳机哪个品牌音质好?五大优质音质的耳夹式耳机!

随着健康理念的传播&#xff0c;运动健身成为大众追求高品质生活的重要部分。传统耳机在运动场景下有局限性&#xff0c;稳定性差、清洁不便&#xff0c;影响运动体验。这时&#xff0c;耳夹式耳机出现&#xff0c;以独特设计和传音方式重塑运动音乐享受&#xff0c;无需入耳&a…

游戏推荐业务中基于 sentinel 的动态限流实践

作者&#xff1a;来自 vivo 互联网服务器团队- Gao Meng 本文介绍了一种基于 sentinel 进行二次开发的动态限流解决方案&#xff0c;包括什么是动态限流、为什么需要引入动态限流、以及动态限流的实现原理。 一、背景 1.1 当前的限流方案 随着互联网的发展及业务的增长&…

Flythings学习(四)串口通信

文章目录 1 串口编程基本步骤1.1 打开串口1.2 配置串口 1.3 读串口1.4 发送串口1.5 关闭串口 2 综合使用3 如何在软件上保证串口稳定通信4 flythings中的串口通讯5 协议接收部分使用和修改方法6 通讯协议数据怎么和UI控件对接 1 串口编程基本步骤 串口通信有5个步骤 1.打开串口…