pandas的行列名更改与数据选择

    记录一些pandas选择数据的内容,此前首先说行列名的获取和更改,以方便获取数据。此文作为学习巩固。

这篇博的内容顺序大概就是: 行列名的获取 —> 行列名的更改 —> 数据选择

一、pandas的行列名获取和更改

1. 获取:   df.index()    df.columns()

  • 首先,举个例子,做一个DataFrame如下:
>>>import pandas as pd
>>>import numpy as np
>>>data = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
>>>data

       

  • 设置了列索引为 abc,行索引是自动生成的,也可以设置
>>>data.index = ['A','B','C']
>>>data

      

以下的做法都以这个 data 作为数据举例

  • 接下来就可以获取索引了,index-行索引,columns-列索引
>>>data.index

    

>>>data.columns

    

2. 修改,看到有很多方法,这里推荐一种比较灵活好用的方法    
   df.rename(index={ }, columns={ }, inplace=True)
>>>data.rename(index={'A':'D', 'B':'E', 'C':'F'}, columns={'a':'d', 'b':'e', 'c':'f'}, inplace = True)
>>>data

    

  • 说明3点:

    1. index和columns无关,可以分别指定,也就是说,可以只修改行索引,那么rename()中只写index

    2. 索引可以任意挑选,如此处,index={'A':'D', 'C':'F'} 则只改A和C,columns同样

    3. inplace=True, 在原dataframe上改动 

二、pandas的数据选择

1. 直接用索引选(不灵活、不推荐)   df[ ]

1) 选择‘a’列

>>>data['a']        

    

注意:1. 这样取出的数据类型为 Series

         2. 这种方法只能取出一列,不能用数字下标,不能多选或片选,  data['a','b']  data['a':'c']  data[0]

2)选择'A','B'行

>>>data['A':'B']  
>>>data[0:2]      # 两种方法同一结果

    

注意:1. 这样取出的数据类型为 DateFrame

         2. 这种方法只能用于片选行,可以用数字下标,不能单独取,即 data['A']  data['A','B']  , data[1]

2.使用 .loc(推荐)  df.loc(),()内参数先行后列,区别行列的取法

1) 取列:

>>>data.loc[:,['a','c']]     #图1 需要行全取,再对应指定列

2)取行:

>>>data.loc[['A','B']]     #图2 直接指定行

3)取行列交叉值:

>>>data.loc[['A'],['b','c']]  #图3 

    (1)                 (2)                 (3)

注意:

1. 区别 df.iloc()      .loc() —— 使用标签 label 作为索引取值

                          .iloc() —— 使用整数下标 index 作为索引取值,如上面三句可以换成以下三

                                           句,输出数据类型有不同

>>>data.iloc[:,[0,2]]    # DataFrame
>>>data.iloc[[0,1]]      # DataFrame
>>>data.iloc[0,[1,2]]    # Series

2. 对于 数字类型的变量,可以使用bool 选取行,列不能用bool,如

>>>data.loc[data.b>5]   # DataFrame

    

>>>data.loc[data.b>5,['c']]   #DataFrame  输出为9位置的frame
>>>data.iloc[data.b.values>5,[2]]  #DataFrame  输出同上,需要有 .values取值

3. .ix[ ] 可以混用label和index,位置使用同 .loc[ ]  .iloc[ ]












  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值