全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
2497 7
2020-08-18
首先,在使用前导入Pandas库,并导入DataFrame类,方法如下:

import pandas as pd
from pandas import DataFrame

data={'ID':['01','02','03','04','05','06','07'],
      'name':['张三','李四','王五','赵六','田七','陈八','刘九'],
      'gender':[True,False,True,False,True,False,True],
      'age':[20,18,19,18,13,17,19],
      'height':[1.88,1.68,1.78,1.59,1.70,1.60,1.71]
}
frame = DataFrame(data)

其实对应的表如下:
5.png

一、引用列
方法1:frame.name                       ----只引用name列
           注意:这样会出歧义
方法2:frame[['name','age']]          --用方括号引用列名
方法3:frame.loc[:,['name']]          ---第一个冒号,表示所有行。所有行的name列,即name列
           frame.loc[:,['name','age']]   ---取name和age列



二、引用行
方法1:frame[0:1]          ---0、1是行的序号
           frame[2:4]          ---取第2行开始到第4行,但不含第4行
           frame[2:7:2]       ---取第2、4、6行,最后一个2是指间隔2行

方法2:frame.loc[1]        ---这里的1是索引号    【结果】是李四所在的行
           frame.loc[1:3]     ---表示取多行,包含索引3
           frame.loc[[1,3]]   ---通过逗号选择多个不连续的行

举例:frame1 = DataFrame(data,index=[101,102,103,104,105,106,107]) 改变索引号
          print(frame1[0:1])                ---打印出第0行,‘张三’所在的行
          print(frame1[101:103])         ---没有101、102行,所以打印出空行
          print(frame1.loc[0:1])           ---没有索引为0、1的行,所以打印空行
          print(frame1.loc[101:103])    ---打印出101、102、103所在的行      


三、引用行列
1)frame['name'][1:2] 等价于frame[1:2]['name']   ---第1行name列的值  
      结果:李四
2)  frame[5:6,['age','height']]    ---索引5、6行的age、height列

3)  frame.iloc[1,3]          ---第2行,第4列,注意这里又完全按序号选择
      frame.iloc[1:2,0:3]    ---第2行,前三列,不包含最后的序号
      frame.iloc[[3,1],[0,2]] ---第4、2行,第1、3列

方法3:增加条件(难点)
          frame[frame['age']>17]  ---年龄大于17的所有行
          frame[frame['age']>17 & frame['height']>1.80]   ---年龄大于17且身高大于1.80
          [修正]这个方法有点害人,不知什么原因,真正使用时还是会报错,应该修改为:
          frame.loc[frame['age']>17 & frame['height']>1.80]   ---年龄大于17且身高大于1.80

           frame[frame['age'].isin([20,16])]     ---年龄为16或20的
           frame['name'][[2,3]][(frame['height']>1.7)]   --选择第2条和第3条且身高大于1.7 的姓名  【结果】王五
        

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-9-3 13:37:46
今天才发现,在同时选择行时,如果用frame[行]的方法,其中的行只能用切片形式。比如,选择第1行,如果写成frame[0],则系统会报错:_maybe_cast_indexer,应该是传入错误索引的意思吧,修改为frame[0:1],则OK。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-10-24 17:58:32
引用列,还可以使用 frame[frame.columns[列号n]]
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-12-11 16:08:39
使用时发现,如果想获取某个单元格的值,则应该用get_value()
使用方法:
a = df.get_value(row_index, column_name)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-12-11 16:16:00
zwy_0309 发表于 2020-12-11 16:08
使用时发现,如果想获取某个单元格的值,则应该用get_value()
使用方法:
a = df.get_value(row_index, c ...
用get_value()会有警告提示,用df.loc(1,'列名'),就会顺利通过,不报任何错误。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-1-3 18:42:20
透视表的多层列索引的解读 多层索引的解读.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群