问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...DataFrame对象的.loc[,]、.iloc[,]方法抽取数据

发布网友 发布时间:2024-10-02 03:23

我来回答

1个回答

热心网友 时间:2024-11-06 04:15

pandas的DataFrame对象,本质上是 二维矩阵 ,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的 名称 。这样内部数据抽取既可以用“ 行列名称(对应.loc[]方法) ”,也可以用“矩阵下标( 对应.iloc[]方法 )”两种方式进行。
下面具体说明:
(以下程序均在Jupyter notebook中进行,部分语句的print()函数省略)
首先生成一个DataFrame对象:

DataFrame对象生成时除了必须指定data参数外,用户还可以指定两个参数columns(列名)和index(行名,注意这里的index不仅可以是数字,也可以是用户指定的任何数据类型,如字母), 如果不指定,则行列名默认都采用0、1、2…… 。
下图说明了前面的情况:

.loc[行标签名/[行标签名list],列标签名/[列标签名list]],即有两个输入参数,第一个指定行名,第二个指定列名。当只有一个参数时,默认是行名(即抽取整行),所有列都选中。

.loc[行位置/[行位置list],列位置/[列位置list]],也有两个输入参数,第一个指定行位置,第二个指定列位置。当只有一个参数时,默认是行位置(即抽取整行),所有列都选中。

上述.loc[]和.iloc[]都只接收了1个参数“语文”或者“0”,因此默认都表示行信息,而列则全部被选中,即抽取'语文'这整一行数据。','表示将两个参数隔开(如果有两个参数的话),':'这里表示选择中所有列。当只有一个输入参数时,python默认','和':'既可写上也可省略。注意:参数['语文']或[0]中只有一个对象时(即只有一行),[]也可以省略,如果有多个对象(即多行)则必须加上[]。此外还需注意,加上[]表示抽取的结果无论是一个数据,一行数据,还是一列数据,他都是DataFrame对象;不加[]时,如果选中的是一行或者一列数据,则是Series对象,如果是一个单独的数据,则是该数据本身的类型。

例2和例1唯一的差别是,第一个参数指定了多行一起输出,此时必须用[]将各行名或者下标括起来,否则出错。后面的','和':'同例1,可省略。注意:原始数据的行顺序是:语文、数学、英语、政治,这里的提取顺序是['英语','语文','政治'],而输出也是'英语','语文','政治',可见输出顺序和参数指定顺序是一致的,而非按原始顺序输出。

例3依然是接受1个参数,列参数没有,后面的','和':'同例1,可省略。连续参数用‘start:end’的方式指定行范围。注意:这里不能用[]将其括起来,否则出错。此外用行列名连续取值时,比如['语文':'政治']会把'政治'所在行也取出来,而利用矩阵下标时,0:3只取0,1,2对应的三行,最后一行不会取出;但是如果行列标签名本身就是整数0,1,2……,而不是文字或者其他类型,那么在使用连续行列标签名取数据时,最后一行或者列是不会被取出的。

抽取整列的方式跟抽取整行在参数设置上完全一样。.loc[]和.iloc[]两个方法默认列为第二个参数, 因此抽取整列时,都必须带上':,'作为区分前面行参数的‘分隔符’,否则出错 。

同时抽取分部行和列的情况,就是把上述单独抽取行和列的方式合并起来用。抽取整个DataFrame对象则是.loc[:,:]或.iloc[:,:],虽然这么做没啥意义。

(1)DataFrame对象的.loc[,]和.iloc[,]方法用于抽取数据,.loc[,]用行列的标签名作为参数,.iloc[,]用二维矩阵元素的网格下标作为参数。
(2)两个方法都接受两个参数,第一个是“行标签”或者“矩阵行号”,第二个是“列标签”或者“矩阵列号”。
(3)两种方法当只指定一个输入参数时,都默是跟“行”相关,而“列”则全部被选中。如何行和列都需要指定时,中间用“逗号,”隔开,这非常重要,否则出错。
(4)当需要选中所有行的某几列时,行参数可以省略,列参数需要指定,此时列参数前面必须带上“,:”,形如.loc[:,列参数],.iloc[:,列参数]。
(5).loc[,]和.iloc[,]设置了一个还是两个输入参数,关键看有没有“,”将两个参数分开,且要区分逗号是一个参数的内部逗号,还有用于分隔行列参数的逗号。
(6)对于两个参数的概念区分,.loc['语文','数学']这表示输入了两个参数,行参数是‘语文’,列参数是‘数学’,对于上面的表格而言这是错的,因为没有叫‘数学’的列,应写为[['语文','数学']],即‘数学’也是行参数的一部分,['语文','数学']整体作为一个行参数,这里的逗号不是用以分隔行和列,仅仅是行list里面的逗号。[['语文','数学']]=[['语文','数学'],]=[['语文','数学'],:],都表示只有一个行参数,列全部选中。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win10电脑hdmiwin10笔记本hdmi连接电视没反应 平板电脑与电视机联接华为平板怎么投屏到电视上 长虹chiq电脑无线投影如何无线把电脑屏幕投影到电视屏幕上 模拟电视电脑系统智能电视怎么变成电脑系统 ops电脑加装固态硬盘ops电脑是什么意思 我想问一下立宇泰电子的ARMSYS6410开发板可以外接什么模块? 小心那些处理过的2元绿幽灵,教你这几招就能识别! 如何辨别人民币是否水洗过,刚有兴趣做收藏可去买第四套人民币还有是否水... oppor7splus手机怎么样现在?照相好不好。是多会儿出来的机子呢。目前... ps怎么改像素大小且不模糊 如甲方未在承诺时间内支付乙方剩余工程尾款,乙方有权要求甲方按照银行利 ... 【Python答疑】Python怎么选取特定列?—Pandas的iloc、loc使用... 柜机通电就显示E8什么情况? ...我不知道按什么了。新建,查找什么的,那一行没了。怎么办_百度... pandas-3-利用loc、iloc进行数据选择 美的空调出现e8是什么意思啊? 甲方如不能按时支付,违约金按应付款额的千分之五支付给乙方。合同... ...大写的字母了,不习惯怎能调回去(换皮肤没有用)? 好吃又营养的茶树菇顿鸡该怎么做? 万德镇名称溯源及历史沿革 嘉善南站k222路现在是否还是按时发车 三星GT-I5508搜索不到三星蓝牙耳机SBH-650设备 三星GT-I5508怎么和诺基亚N95蓝牙耳机配对 三星i5508为什么连接不了蓝牙耳机? 这手机是要坏了吗。步步高的质量越来越不好了。大前年买vivixplus。去 ... 三星i5508 怎样用蓝牙耳塞 内存卡插了别人手机 拿回来之后智能手机就不能读取了 可是老爷机和P4还... 三星I5508如何连接蓝牙耳机,蓝牙耳机诺基亚BH-105,就是查不到蓝牙耳机... 三星GT-i5508蓝牙耳机连接不了怎么办 手机1900赫兹能在加拿大用吗 ps辅助线怎么调 豆浆能过夜吗还能喝吗 有没有一些关于快乐心情的词语? 万州有哪些服装品牌 东条英机对哪个人尤为崇拜? 东条英机打算如何让自己的“英名”永世传颂? 国二缺考会有什么影响 ...相思入骨一类的,不要拿平常好一点的排比句,多谢合作,不会_百度知 ... 国二考试弃考还可以再报名不? 郑州哪家胡辣汤好喝,河南哪家胡辣汤最好吃,郑州最贵胡辣汤漯河胡辣汤... 帮忙找十几句精彩语段,最还是排比句之类的,越多越好 精美排比句41句 ...洛阳胡辣汤哪家店好吃,登封的胡辣汤哪的好喝 ...个拟人句和五个排比句,句子要优美,不要太长的句子,谢谢 感觉自己性欲太强了,怎么办? 我的性欲强,老伴去世多年,如何是好? 铁皮石斛有哪些好处 上班三个星期辞职老板不给工资怎么办? 茵芙莎美肌液保质期多久 茵芙莎美肌液r3是什么 IPSA茵芙莎自律循环美肌液的美白效果如何?