当前位置: 首页 > news >正文

DataFrame增删改数据

目录

准备数据

DataFrame添加列

直接添加列数据

使用insert添加列数据

DataFrame删除行列

准备数据

删除行

删除列

DataFrame数据去重


准备数据

import pandas as pd
df = pd.read_csv("../data/b_LJdata.csv")
df

 

DataFrame添加列

直接添加列数据

1)获取前5条数据并复制一份

# 获取前5条数据并复制一份
copy_df = df.head().copy()
copy_df

2) 添加列名为 城市 的一列, 值都为 北京

# 添加一列 城市,值为北京
copy_df['城市']='北京'
copy_df

3)添加列名为 区县 的一列, 值分别是 '朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'

# 添加列名为 区县 的一列, 值分别是 '朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'
copy_df['区县']=['朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区']
copy_df

4) 添加列名为 新价格 的一列, 值比原价格列的值多1000元

 

# 添加列名为 新价格 的一列, 值比原价格列的值多1000元
copy_df['新价格'] = copy_df['价格'] +1000
copy_df

使用insert添加列数据

DataFrame的 insert 方法用于在特定位置插入新的列

以下是 df.insert(loc=, column=, value=)的详细解释:

  • 1 参数说明

    • loc:

      • 这是一个整数,表示要插入新列的位置索引。索引从 0 开始,所以 loc=0 表示在最左边插入新列,loc=1 表示在第二列的位置插入新列,依此类推。

    • column:

      • 这是一个字符串,表示新列的名称。

    • value:

      • 可以是一个标量值、列表、数组或其他可迭代对象,它将成为新列的值。如果是标量值,该值将被广播到新列的所有行。如果是可迭代对象,其长度必须与数据框的行数相等。

  • 使用insert方法会直接修改原始的DataFrame对象。如果需要保留原始数据框的副本,可以先对其进行复制。

  • 确保value参数的值与数据框的行数相匹配,否则会引发错误。

  • 如果多次调用insert方法插入多个新列,每次插入都会移动后续的列,可能会影响性能。在某些情况下,可以考虑一次性构建包含所有列的数据框,而不是逐个插入列。

1) 获取前5条数据并复制一份

# 1 获取前5条数据并复制一份
copy_df = df.head().copy()
copy_df

2) 在区域列后添加列名为 城市 的一列, 值都为北京

# 2 在 区域 列后添加列名为 城市 的一列, 值都为北京
# 2.1 获取指定列的索引 df.columns.get_loc(列名)
area = copy_df.columns.get_loc('区域')
print(area)# 添加新列
copy_df.insert(loc=area+1,column='城市',value='北京')
print(copy_df)

 

3)在城市列后添加列名为 区县 的一列, 值分别是 '朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'

#%%
# 3 在城市列后添加列名为 区县 的一列, 值分别是 '朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'
# 3.1 获取指定列的索引 df.columns.get_loc(列名)
city = copy_df.columns.get_loc('城市')
print(city)# 添加新列
copy_df.insert(loc=city+1,column='区县',value=['朝阳区', '朝阳区', '西城区', '昌平区', '朝阳区'])
print(copy_df)

4) 在价格列后添加列名为 新价格 的一列, 值比原价格列的值多1000元

# 4 在价格列后添加列名为 新价格 的一列, 值比原价格列的值多1000元
# 4.1 获取指定列的索引 df.columns.get_loc(列名)
price = df.columns.get_loc('价格')
print(price)# 添加新列
copy_df.insert(loc=price+1,column='新价格',value=copy_df['价格']+1000)
print(copy_df)

DataFrame删除行列

pandas中,df.drop(labels=, axis=, inplace=)方法用于删除DataFrame中的行或列。

  • labels

    • 可以是一个标签(例如列名或行索引)或一个标签列表,表示要删除的行或列。

    • 如果是单个标签,将删除对应的一行或一列。如果是列表,则删除多个行或列。

  • axis

    • 决定是删除行还是列。默认值为 0,表示按行删除。如果设置为 1,则表示按列删除。

    • 例如,axis=0可以用来删除特定的行,而axis=1可以用来删除特定的列。

  • inplace

    • 这是一个布尔值参数。如果为True,则直接在原始DataFrame上进行修改,不会返回新的DataFrame。如果为False(默认值),则会返回一个新的DataFrame,原始的DataFrame保持不变。

准备数据

import pandas as pd
df = pd.read_csv('../data/b_LJdata.csv')
df

删除行

1)删除一行数据 原df上并没有删除(完整版)

# 删除行:不在原有基础删除,删除一行
copy_df = df.head().copy()
print("===================删除=============================")
new_df = copy_df.drop(labels=[1],axis=0,inplace= False)
print(new_df)
print("====================删除后======================")
print(copy_df)

2) 删除一行数据 原df上并没有删除(简化版) 

# 删除行:不在原有基础删除,删除一行
copy_df = df.head().copy()
print("===================删除=============================")
new_df = copy_df.drop(labels=[1])
print(new_df)
print("====================删除后======================")
print(copy_df)

3) 删除多行数据 原df上并没有删除 

# 删除多行
copy_df = df.head().copy()
print("===================删除=============================")
new_df = copy_df.drop(labels=[1,2,4],axis=0,inplace= False)
print(new_df)
print("====================删除后======================")
print(copy_df)

4) 删除一行数据 原df上删除

# 在原基础上删除一行
copy_df = df.head().copy()
print("====================删除前======================")
print(copy_df)
print("===================删除=============================")
new_df = copy_df.drop(labels=[1],axis=0,inplace= True)
print(new_df)
print("====================删除后======================")
print(copy_df)

5) 删除多行数据 原df上删除 

# 在原基础上删除多行
copy_df = df.head().copy()
print("====================删除前======================")
print(copy_df)
print("===================删除=============================")
new_df = copy_df.drop(labels=[1,1,3],axis=0,inplace= True)
print(new_df)
print("====================删除后======================")
print(copy_df)

删除列

1) 删除一列数据 原df上并没有删除(完整版)

# 不在原基础上,删除一列
copy_df = df.head().copy()
print("==================删除=====================")
new_df = copy_df.drop(labels=['地址'],axis=1,inplace= False)
print(new_df)
print("===============删除后==================")
print(copy_df)

2) 删除多列数据 原df上并没有删除

# 不在原基础上,删除多列
copy_df = df.head().copy()
print("==================删除=====================")
new_df = copy_df.drop(labels=['地址','价格'],axis=1,inplace= False)
print(new_df)
print("===============删除后==================")
print(copy_df)

3) 删除一列数据 原df上删除

# 在原有基础上,删除一行
copy_df = df.head().copy()
print("==================删除=====================")
new_df = copy_df.drop(labels=['地址'],axis=1,inplace= True)
print(new_df)
print("===============删除后==================")
print(copy_df)

4) 删除多列数据 原df上删除


# 在原基础上,删除多列
copy_df = df.head().copy()
print("==================删除=====================")
new_df = copy_df.drop(labels=['地址','价格'],axis=1,inplace= True)
print(new_df)
print("===============删除后==================")
print(copy_df)

DataFrame数据去重

pandas中,DataFrame.drop_duplicates(subset=, keep=, inplace=)方法用于删除数据框中的重复行。

  • subset

    • 可以是一个列标签或列标签列表,表示根据这些列来判断重复行。

    • 如果指定了subset,则只考虑这些列中的值来确定重复行。例如,如果subset=['col1', 'col2'],那么只有当col1col2列的值完全相同时,才会被认为是重复行。

    • 如果不指定subset,则会考虑所有列来判断重复行。

  • keep

    • 决定保留哪些重复行。可以取以下三个值之一:

      • 'first'(默认值):保留第一次出现的重复行。

      • 'last':保留最后一次出现的重复行。

      • False:删除所有重复行。

  • inplace

    • 这是一个布尔值参数。如果为True,则直接在原始DataFrame上进行修改,不会返回新的DataFrame。如果为False(默认值),则会返回一个新的DataFrame,原始的DataFrame保持不变。

1) 对 '户型', '朝向' 去重, 保留第一条, 不影响原始数据

# 1 对 '户型', '朝向' 去重, 保留第一条, 不影响原始数据
# 1.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ],keep='first',inplace=False)
print(new_df)
print("=================去重后===========================")
print(copy_df)

2) 对 '户型', '朝向' 去重, 保留最后一条, 不影响原始数据

# 2 对 '户型', '朝向' 去重, 保留最后一条, 不影响原始数据
# 1.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ],keep='last',inplace=False)
print(new_df)
print("=================去重后===========================")
print(copy_df)

3) 对 '户型', '朝向' 去重, 删除所有重复数据, 不影响原始数据

# 3 对 '户型', '朝向' 去重, 删除所有重复数据, 不影响原始数据
# 3.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ],keep=False,inplace=False)
print(new_df)
print("=================去重后===========================")
print(copy_df)

4) 对 '户型', '朝向' 去重, 保留第一条, 影响原始数据

# 4 对 '户型', '朝向' 去重, 保留第一条, 影响原始数据
# 4.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ],keep='first',inplace=True)
print(new_df)
print("=================去重后===========================")
print(copy_df)

5) 对 '户型', '朝向' 去重, 保留最后一条, 影响原始数据

# 5 对 '户型', '朝向' 去重, 保留最后一条, 影响原始数据
# 5.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ],keep='last',inplace=True)
print(new_df)
print("=================去重后===========================")
print(copy_df)

6) 对 '户型', '朝向' 去重, 删除所有重复数据, 影响原始数据

# 6 对 '户型', '朝向' 去重, 删除所有重复数据, 影响原始数据
# 6.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ],keep=False,inplace=True)
print(new_df)
print("=================去重后===========================")
print(copy_df)

7) 简化版1 对 '户型', '朝向' 去重

# 7 简化版1 对 '户型', '朝向' 去重
# 7.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates(subset=['户型', '朝向' ])
print(new_df)
print("=================去重后===========================")
print(copy_df)

8) 简化版2 对 所有列 去重

# 8 简化版2 对 所有列 去重
# 8.1 准备测试数据
copy_df = df.head().copy()
print("===============去重========================")
new_df = copy_df.drop_duplicates()
print(new_df)
print("=================去重后===========================")
print(copy_df)

相关文章:

DataFrame增删改数据

目录 准备数据 DataFrame添加列 直接添加列数据 使用insert添加列数据 DataFrame删除行列 准备数据 删除行 删除列 DataFrame数据去重 准备数据 import pandas as pd df pd.read_csv("../data/b_LJdata.csv") df DataFrame添加列 直接添加列数据 1&…...

一站式解决App下载量统计,Xinstall引领新潮流

在移动应用市场中,App下载量是衡量应用受欢迎程度和市场表现的重要指标。然而,对于许多开发者而言,如何精准统计App下载量却是一个不小的挑战。幸运的是,如今有了一款专业的App全渠道统计服务商——Xinstall,它能够帮助…...

ijkMediaPlayer+ TextureView 等比全屏播放视频(避免拉伸)

TextureView默认以fitxy的方式加载surface数据,如果需要等比全屏播放视频,避免拉伸,可以采用Matrix对TextureView进行变换 废话不多说,直接上代码 public class BaseIjkPlayer implements TextureView.SurfaceTextureListener{/…...

【RS】GEE(Python):数据处理

在前面的章节中,我们已经学习了如何加载影像数据。现在,让我们进一步探讨如何在 Google Earth Engine (GEE) 中进行数据处理。数据处理通常包括图像预处理、裁剪、过滤、重采样等操作。 栅格影像的处理 栅格影像处理包括了裁剪、波段选择、重采样、合成…...

非线性磁链观测器推导

<div id"content_views" class"htmledit_views"><p id"main-toc"><strong>目录</strong></p> 电机方程 电压方程 磁链方程 定义状态变量和输出变量 非线性观测器方程 电角度的计算--锁相环 锁相环调参 电机…...

什么时机用mysql,什么时机用redis,什么时机用本地内存

mysql 的 buffer pool 也是存在内存中&#xff0c;redis 的数据也是存在内存中&#xff0c;为什么不直接存在 mysql 里&#xff1f; 1、数据结构和访问方式 Redis 是一个内存数据库&#xff0c;专门为高效的读写性能而设计。它支持多种数据结构&#xff08;如字符串、列表、哈…...

Redis八股

缓存 缓存穿透 当查询一个不存在的数据&#xff0c;mysql查询不到数据&#xff0c;无法写入缓存&#xff0c;导致每次都请求数据库 解决方法 缓存空数据&#xff0c;当查询结果未空&#xff0c;将结果进行缓存。 简单但是会消耗内存&#xff0c;而且会出现不一致情况。布隆…...

vue3--通用 popover 气泡卡片组件实现

背景 在日常开发中,我们一般都是利用一些诸如:element-ui、element-plus、ant-design等组件库去做我们的页面或者系统 这些对于一些后台管理系统来说是最好的选择,因为后台管理系统其实都是大同小异的,包括功能、布局结构等 但是对于前台项目,比如官网、门户网站这些 …...

Bluetooth Channel Sounding中关于CS Step及Phase Based Ranging相应Mode介绍

目录 BLE CS中Step定义 BLE CS中交互的数据包/波形格式 BLE CS中Step的不同Mode BLE CS中Step的执行过程 Mode0介绍 Mode0 步骤的作用 Mode0步骤的执行过程 Mode0步骤的执行时间 Mode0步骤的时间精度要求 Mode2介绍 Mode2步骤的作用和执行过程 Mode2步骤的执行时间 B…...

简易STL实现 | Queue 的实现

封装&#xff1a; std::queue 在底层容器的基础上 提供了封装。默认情况下&#xff0c;std::queue 使用 std::deque 作为其底层容器&#xff0c;但也可以配置为使用 std::list 或 其他符合要求的容器 时间复杂度&#xff1a; 入队和出队操作 通常是 常数时间复杂度&#xff08…...

【hot100-java】LRU 缓存

链表篇 灵神题解 class LRUCache {private static class Node{int key,value;Node prev,next;Node (int k,int v){keyk;valuev;}}private final int capacity;//哨兵节点private final Node dummynew Node(0,0);private final Map<Integer,Node> keyToNode new HashMap&l…...

Centos7安装ZLMediaKit

一 获取代码 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块&#xff08;submodules&#xff09;。这个命令在 Git 仓库中包含对其他 Git 仓库作为依赖时…...

面试问我LLM中的RAG,咱就是说秒过!!!

前言 本篇文章涉及了 RAG 流程中的数据拆分、向量化、查询重写、查询路由等等&#xff0c;在做 RAG 的小伙伴一定知道这些技巧的重要性。推荐仔细阅读&#xff0c;建议收藏&#xff0c;多读几遍&#xff0c;好好实践。 本文是对检索增强生成&#xff08;Retrieval Augmented …...

python程序操作pdf

python代码进行多个图片合并为pdf&#xff1a; #python代码进行多个图片合并为pdf&#xff1a; from PIL import Image from fpdf import FPDF import osdef images_to_pdf(image_paths, output_pdf, quality85):"""将多个图片合并为一个PDF文件&#xff0c;并…...

【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。

【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。 问题描述报错原因解决方案参考 问题描述 此段Python代码&#xff08;在Conda环境下运行&#xff09;昨天还能运行&#xff0c;但在我手痒更新conda&#xff08;我有罪&#xff09;之…...

外包干了5天,技术明显退步

我是一名本科生&#xff0c;自2019年起&#xff0c;我便在南京某软件公司担任功能测试的工作。这份工作虽然稳定&#xff0c;但日复一日的重复性工作让我逐渐陷入了舒适区&#xff0c;失去了前进的动力。两年的时光匆匆流逝&#xff0c;我却在原地踏步&#xff0c;技术没有丝毫…...

正则表达式 | Python、Julia 和 Shell 语法详解

正则表达式在网页爬虫、脚本编写等众多任务中都有重要的应用。为了系统梳理其语法&#xff0c;以及 Python、Julia 和 Shell 中与正则表达式相关的工具&#xff0c;本篇将进行详细介绍。 相关学习资源&#xff1a;编程胶囊。 基础语法 通用语法 在大多数支持正则表达式的语…...

JavaScript全面指南(一)

​ &#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南(一) 1、介绍一下JS的内置类型有哪些&#xff1f; 基本数据类型…...

docker-compose与docker

“docker-compose” 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个名为 docker-compose.yml 的配置文件来描述应用程序的服务、网络和卷&#xff0c;然后通过简单的命令就可以管理整个应用。 以下是一些常用的 docker-compose 命令及其用法&#xff1a; 启动…...

DDPM浅析

在机器学习和人工智能领域&#xff0c;生成模型一直是一个备受关注的研究方向。近年来&#xff0c;一种新型的生成模型——扩散概率模型&#xff08;Diffusion Probabilistic Models&#xff0c;简称DDPM&#xff09;引起了广泛的关注。本文将探讨DDPM的原理、优势以及应用。 …...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱&#xff1f;分层思维来救场&#xff01; 作者按&#xff1a; 你是不是也遇到过 BLE 多连接时&#xff0c;调试现场像网吧“掉线风暴”&#xff1f; 温度传感器连上了&#xff0c;心率带丢了&#xff1b;一边 OTA 更新&#xff0c;一边通知卡壳。…...