python df.iloc_python中loc

python df.iloc_python中locstackoverflow原文:pandasilocvsixvslocexplanation;howaretheydifferent?在pandas0.20.0及以上版本,ix已经被loc和iloc取代了,因此不讨论它。前提,简单介绍一下它俩:–loc利用index的名称,来获取想要的行(或列)。–iloc利用index的具体位置(所以它只能是整数型参数),…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

stackoverflow原文:pandas iloc vs ix vs loc explanation; how are they different?

在pandas 0.20.0及以上版本,ix已经被lociloc取代了,因此不讨论它。

  • 前提,简单介绍一下它俩:
    loc利用index的名称,来获取想要的行(或列)。(名称导向的这个特点,使得df[df.loc['col_name'] == 'condition', 'col_name'] = value_1成立。
    具体的实际应用,可参考 代码案例 一步实现EXCEL的合并数据、数据筛选、数据透视功能

    iloc利用index的具体位置(所以它只能是整数型参数),来获取想要的行(或列)。


举个栗子来直观看一下:

import...
s = pd.Series(np.nan, index=[49, 48, 47, 46, 45, 1, 2, 3, 4, 5])
print(s)
# s如下:
49   NaN
48   NaN
47   NaN
46   NaN
45   NaN
1    NaN
2    NaN
3    NaN
4    NaN
5    NaN
  • 让我们用整数3来试着提数:
    – 在这里, s.iloc[:3]返回给我们的是前3行的数(因为把3当作位置信息做的处理),s.loc[:3]返回前8行得数(因为把3当作名称对象做的处理):
print(s.iloc[:3])
#结果如下:
49   NaN
48   NaN
47   NaN

print(s.loc[:3])
# 结果如下:
49   NaN
48   NaN
47   NaN
46   NaN
45   NaN
1    NaN
2    NaN
3    NaN
  • 如果我们试着用一个不在index里的整数,比如6会出现什么结果呢?
    – 当然s.iloc[:6]返回的是前6行的数。但是,s.loc[:6]会被挂起提示KeyError,这是因为6不是index的元素。
print(s.iloc[:6])
# 结果如下:
49   NaN
48   NaN
47   NaN
46   NaN
45   NaN
1    NaN

print(s.loc[:6])
# 结果如下:
keyError: 6

根据位置和名称信息混搭的取数

还是举个例子:对于一个DaraFrame,如果我想提取c行及其之前所有的,同时属于前4列的数呢?

df = pd.DataFrame(np.nan,
                  index=list('abcde'),
                  columns=['x', 'y', 'z', 8, 9])
print(df)
# df如下:
    x   y   z   8   9
a NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN
e NaN NaN NaN NaN NaN


df_select = df.iloc[:df.index.get_loc('c') + 1, :4]
print(df_select)
# df_select如下
    x   y   z   8
a NaN NaN NaN NaN
b NaN NaN NaN NaN
c NaN NaN NaN NaN

get_loc(pandas 0.24.1)是一个应用在index的工具,即“获取名称对象在index的位置(整数)”。注意,因为iloc[num_of_row_start : num_of_row_end, num_of_column_start : num_of_column_end]不包含num_of_end,所以需要 +1才能包含c行。

拓展

因此,可以利用.loc[]提取目标行 / 目标列

print(df.loc[['b', 'c']])
# 结果如下
    x   y   z   8   9
b NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN

print(df.loc[:, ['y', 8]])
# 结果如下
    y   8
a NaN NaN
b NaN NaN
c NaN NaN
d NaN NaN
e NaN NaN

print(df.loc[['b', 'c'], ['y', 8]])
# 结果如下
    y   8
b NaN NaN
c NaN NaN
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184255.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 51单片机抢答器程序_用keil编写4路抢答器程序

    51单片机抢答器程序_用keil编写4路抢答器程序基于AT89C51单片机的八路抢答器设计方案毕业设计(论文)-基于AT89C51单片机的八路抢答器设计图书分类号:密级:毕业论文基于AT89C51的八路抢答器设计OCTALANSWERDESIGNACCORDINGONAT89C51班级学号学生姓名学院名称信电学院专业名称电子信息工程技术指导教师2010年05月20日摘要本设计是以八路抢答为基本理念。考虑到依需…

    2022年10月20日
    0
  • 苹果手机录屏软件_4款手机录屏软件推荐,你觉得哪款更好用?

    苹果手机录屏软件_4款手机录屏软件推荐,你觉得哪款更好用?随着智能与科技的迅速发展,现在国内外基本上用户都用上了手机。据相关数据统计,在2016年的时候,全球的手机用户量已经超过了26亿人次。在2020年之后,全球手机的用户量预计将超过36亿。而如此大的用户群体下面,手机的作用也不仅限于通讯,更多的是追剧娱乐。所以,录屏的需求也就比较多了。那么,手机录屏软件哪个好呢?小编认为:简单、好用是关键!所以今天这期就给大家推荐一波录屏软件!↓↓一、简单类手机录屏…

    2022年9月24日
    1
  • iPhone手机屏幕尺寸分辨率一览

    iPhone手机屏幕尺寸分辨率一览机型物理像素逻辑像素规格对角线iPhone12ProMax1284*2778px428*926pt@3×6.7英寸iPhone12Pro1170*2532px390*844pt@3×6.1英寸iPhone121170*2532px390*844pt@3×6.1英寸iPhone12mini1080*2340px360*780pt@3×5.4英寸iPhone11ProMax1242*2688px414*8…

    2022年5月14日
    58
  • 解决webIDE里git push报错的问题

    解决webIDE里git push报错的问题issueYouhavefinisheddevelopmentinWebIDE.WhenyoutrytopushyourchangesdoneinWebIDEtogithub,andyoumeetwiththeerrorbelow:https://github.com/i042416/ui5-fiori:cannotopengit-rec…

    2022年10月17日
    0
  • vue作用域插槽完整例子(vue插槽使用场景)

    <!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>作用域插槽具有代表性的实例</title></head><body><divid=”mylist”&g…

    2022年4月13日
    63
  • maven本地仓库配置文件_maven默认仓库地址

    maven本地仓库配置文件_maven默认仓库地址maven配置本地仓库

    2022年9月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号