pandas查找、排序和去重
最编程
2024-01-15 13:23:52
...
import pandas as pd
import numpy as np
#定义DataFrame
dict={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}
df=pd.DataFrame(dict,index=['one','two','three'])
print(df)
a | b | c | |
---|---|---|---|
one | 1 | 4 | 7 |
two | 2 | 5 | 8 |
three | 3 | 6 | 9 |
1.Series通过索引查找
可用Index ,也可用数字下标
s1=df['b']
print(s1['two'])
print(s1[['two','one']]) # 用数组列出离散的标签,要用[ ]括起来
print(s1['two':'three']) # 标签切片
print(s1[0:2])
2.DataFrame通过索引查找
(1) 直接通过列索引取列
df['b']
df[['b','c']] # 用数组列出离散的标签,要用[ ]括起来
(2) .loc 通过标签索引数据
df['b']
df[['b','c']] # 用数组列出离散的标签,要用[ ]括起来
先写行标签,后写列标签
列举多个列,要用数组,用[ ]括起来
列举切片,则无需用[ ]括起来。注意标签切片的右括号是闭合的
df.loc[['two','one']] #索引多行,行名用数组
df.loc['two':'three'] #索引多行,行名用切片
df.loc[:,['b','a']] #索引某行多列,列名用数组
df.loc[:,'b':'a'] #索引某行多列,列名用切片
(3) .iloc 通过通过标号获取数据
先写行号,再写列号
可用单值,也可用切片,注意:标号切片的右括号是开区间的
df.iloc[1:3,1:3]
3.索引和列之间的转换
(1) 列-->索引
- inplace参数可以定义是否覆盖原数据
df.set_index('a', inplace=True) # inplace=True 会在原变量直接改,没有返回值
df
df1=df.set_index('a', inplace=False) # inplace=False则有返回值(默认),原变量不变
df1
(2) 索引-->列
- 索引变成列会排在DataFrame的第一列
df.reset_index(inplace=True)
df
4.利用索引进行排序
(1) pandas 根据某一列排序
df.set_index('a', inplace=True) # inplace=True 会在原变量直接改,没有返回值
df
df1=df.set_index('a', inplace=False) # inplace=False则有返回值(默认),原变量不变
df1
df.reset_index(inplace=True)
df
(1) pandas 根据某一列排序
pandas排序的方法有很多,sort_values表示根据某一列排序
pd.sort_values("xxx",inplace=True)
表示pd按照xxx这个字段排序,inplace默认为False,如果该值为False,那么原来的pd顺序没变,只是返回的是排序的
https://blog.****.net/happy5205205/article/details/105124051/
(2) 按照时间排序
先把它转为时间对象
df['time'] = pd.to_datetime(df['time'])
然后再对time这列排序
df.sort_values('time', inplace=True)
5.根据索引进行数据去重
keep='first' or 'last',可以选择保留第一条或最后一条
df=df[~df.index.duplicated(keep='first')]
推荐阅读
-
python数据分析中pandas对某列Series调用有道翻译API进行翻译--思路:因为翻译接口有访问次数限制,所以先将Series去重,然后调用有道翻译接口将Series中的每个数据,翻译成中文保存为json文件{原始数据:翻译数据},然后对原始Series进行遍历替换
-
Python 图像压缩和去重
-
PHP 冒泡排序和二分查找示例
-
二叉查找树、二叉搜索树和二叉排序树算法的分析与实现
-
堆排序 - 升序和降序_前 K-N 数查找最大的前 K
-
C# 使用 FirstOrDefault() 查找和首字母排序
-
Java 常用算法_常用查找和排序算法 - 介绍和代码演示
-
基于 MapReduce+Pandas 的电影排序和推荐以及数据分析和可视化展示
-
数据分析 - Pandas 类别的排序和排序
-
Java 类加载器的作用 - 简介:类加载器是 Java™ 中一个非常重要的概念。类加载器负责将 Java 类的字节码加载到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模型、加载类的具体过程和线程上下文类加载器等。然后介绍了如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。 类加载器是 Java 语言的一项创新,也是 Java 语言广受欢迎的重要原因之一。它允许将 Java 类动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 开始出现,最初是为了满足 Java Applets 的需求而开发的,Java Applets 需要从远程位置下载 Java 类文件并在浏览器中执行。现在,类加载器已广泛应用于网络容器和 OSGi。一般来说,Java 应用程序的开发人员不需要直接与类加载器交互;Java 虚拟机的默认行为足以应对大多数情况。但是,如果遇到需要与类加载器交互的情况,而您又不太了解类加载器的机制,就很容易花费大量时间调试异常,如 ClassNotFoundException 和 NoClassDefFoundError。本文将详细介绍 Java 的类加载器,帮助读者深入理解 Java 语言中的这一重要概念。下面先介绍一些基本概念。 类加载器的基本概念 顾名思义,类加载器用于将 Java 类加载到 Java 虚拟机中。一般来说,Java 虚拟机以如下方式使用 Java 类:Java 源程序(.java 文件)经 Java 编译器编译后转换为 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码并将其转换为 java.lang 实例。每个实例都用来表示一个 Java 类。通过该实例的 newInstance 方法创建该类的对象。实际情况可能更加复杂,例如,Java 字节代码可能是由工具动态生成或通过网络下载的。 基本上,所有类加载器都是 java.lang.ClassLoader 类的实例。下面将详细介绍这个 Java 类。 java.lang.ClassLoader 类简介 java.lang.ClassLoader 类的基本职责是根据给定类的名称为其查找或生成相应的字节码,然后根据这些字节码定义一个 Java 类,即 java.lang.Class 类的实例。除此之外,ClassLoader 还负责加载 Java 应用程序所需的资源,如图像文件和配置文件。不过,本文只讨论它加载类的功能。为了履行加载类的职责,ClassLoader 提供了许多方法,其中比较重要的方法如表 1 所示。下文将详细介绍这些方法。 表 1.与加载类相关的 ClassLoader 方法