Pandas 索引(index)/选取(select)/标签(label)操作

import pandas as pd
df = pd.DataFrame({"学号": [1001,1002,1003,1004,1005],
                   "name": ["A","B","C","D","E"],
                 "生日": ["1990/01/02","1992/02/05","1990/05/06","1991/05/30","1992/05/03"],
                  "性别": ["boy","girl","girl","boy","girl"],
                   "数学": [56,67,47,87,47]
                  })
df.set_index("生日",inplace=True)
df.index=pd.to_datetime(df.index)
df
Out[1]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [2]:
df.add_prefix("x") #给列添加前缀
Out[2]:
  xname x学号 x性别 x数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [3]:
df.add_suffix("x") #给列添加后缀
Out[3]:
  namex 学号x 性别x 数学x
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [4]:
df.align(df.drop(max(df.index))) #对齐
Out[4]:
(           name    学号    性别  数学
 生日                             
 1990-01-02    A  1001   boy  56
 1990-05-06    C  1003  girl  47
 1991-05-30    D  1004   boy  87
 1992-02-05    B  1002  girl  67
 1992-05-03    E  1005  girl  47,            name      学号    性别    数学
 生日                                 
 1990-01-02    A  1001.0   boy  56.0
 1990-05-06    C  1003.0  girl  47.0
 1991-05-30    D  1004.0   boy  87.0
 1992-02-05    B  1002.0  girl  67.0
 1992-05-03  NaN     NaN   NaN   NaN)
In [5]:
df.drop(max(df.index)) #删除行
Out[5]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
In [6]:
df.drop_duplicates() #删除重复数据
Out[6]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [7]:
df.equals(df.drop(max(df.index))) #比较是否一样
Out[7]:
False
In [8]:
df.filter(items=["name"]) #选取子数据框
Out[8]:
  name
生日  
1990-01-02 A
1992-02-05 B
1990-05-06 C
1991-05-30 D
1992-05-03 E
In [ ]:
df.first() #不懂
In [10]:
df.head(2) #选取头2行元素
Out[10]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
In [ ]:
df.idxmax() #不懂
In [ ]:
df.idxmin() #不懂
In [ ]:
df.last() #不懂
In [11]:
df.drop(max(df.index)).reindex(df.index) #按照以前的索引从新索引
Out[11]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001.0 boy 56.0
1992-02-05 B 1002.0 girl 67.0
1990-05-06 C 1003.0 girl 47.0
1991-05-30 D 1004.0 boy 87.0
1992-05-03 NaN NaN NaN NaN
In [12]:
df.drop(max(df.index)).reindex_axis(df.index) #从新索引
Out[12]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001.0 boy 56.0
1992-02-05 B 1002.0 girl 67.0
1990-05-06 C 1003.0 girl 47.0
1991-05-30 D 1004.0 boy 87.0
1992-05-03 NaN NaN NaN NaN
In [13]:
df.drop(max(df.index)).reindex_like(df.drop(min(df.index))) #按照其他数据框索引
Out[13]:
  name 学号 性别 数学
生日        
1992-02-05 B 1002.0 girl 67.0
1990-05-06 C 1003.0 girl 47.0
1991-05-30 D 1004.0 boy 87.0
1992-05-03 NaN NaN NaN NaN
In [14]:
df.rename(columns={"name":"Name"}) #更改列名
Out[14]:
  Name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [15]:
df.rename_axis("name") #更改索引名
Out[15]:
  name 学号 性别 数学
name        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [16]:
df.reset_index() #重新索引
Out[16]:
  生日 name 学号 性别 数学
0 1990-01-02 A 1001 boy 56
1 1992-02-05 B 1002 girl 67
2 1990-05-06 C 1003 girl 47
3 1991-05-30 D 1004 boy 87
4 1992-05-03 E 1005 girl 47
In [17]:
df.sample(2) #随机抽样
Out[17]:
  name 学号 性别 数学
生日        
1992-05-03 E 1005 girl 47
1990-05-06 C 1003 girl 47
In [ ]:
df.select() #不懂
In [18]:
df.set_index("性别") #设置索引
Out[18]:
  name 学号 数学
性别      
boy A 1001 56
girl B 1002 67
girl C 1003 47
boy D 1004 87
girl E 1005 47
In [19]:
df.tail(3) #选取后3行元素
Out[19]:
  name 学号 性别 数学
生日        
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [20]:
df.take([1,2]) #绝对索引
Out[20]:
  name 学号 性别 数学
生日        
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
In [21]:
df.truncate() #不同
Out[21]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1992-02-05 B 1002 girl 67
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-05-03 E 1005 girl 47
In [22]:
df.sort_index() #按索引排序
Out[22]:
  name 学号 性别 数学
生日        
1990-01-02 A 1001 boy 56
1990-05-06 C 1003 girl 47
1991-05-30 D 1004 boy 87
1992-02-05 B 1002 girl 67
1992-05-03 E 1005 girl 47
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值