pandas 索引去重_pandas查找、排序和去重

本文介绍了如何使用pandas进行数据查找、排序和去重操作。包括Series和DataFrame的索引查找,如通过标签和下标访问元素,以及利用loc和iloc方法。还展示了如何设置和恢复索引,以及对数据进行排序。最后,文章讲解了如何根据索引去重,可以使用`~df.index.duplicated(keep='first')`来保留不重复的记录。
摘要由CSDN通过智能技术生成

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.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 根据某一列排序

pandas排序的方法有很多,sort_values表示根据某一列排序

pd.sort_values("xxx",inplace=True)

表示pd按照xxx这个字段排序,inplace默认为False,如果该值为False,那么原来的pd顺序没变,只是返回的是排序的

https://blog.csdn.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')]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值