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已经被loc和iloc取代了,因此不讨论它。

  • 前提,简单介绍一下它俩:
    – 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PhalApi 1.4.2 经典封存版 – 码云

    PhalApi 1.4.2 经典封存版 – 码云

    2021年11月4日
  • vc++可以编辑c语言吗?_vc6.0使用教程详解

    vc++可以编辑c语言吗?_vc6.0使用教程详解如何编写自己的VCL控件    用过Delphi的朋友们,大概对Delphi的最喜欢Delphi的不是他的强类型的pascal语法,而是强大的VCL控件,本人就是一位VCL控件的爱好者。    VCL控件的开源,给我们带来了享之不尽的优点。不像曾经的ole控件以及ActiveX,你全然能够重写Delphhi标准控件,并且网上这方面的资源非常多。    关于怎样编写VCL控…

    2022年9月25日
  • 如何在mac上查看gcc版本号[通俗易懂]

    如何在mac上查看gcc版本号[通俗易懂]linux能够很方便得查看gcc版本号,只需要输入gcc–version就能得到如下结果,能一目了然gcc版本是4.9.2gcc(GCC)4.9.2Copyright(C)2014FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSF

    2022年6月26日
  • 合成控制法 (Synthetic Control Method) 及 Stata实现[通俗易懂]

    合成控制法 (Synthetic Control Method) 及 Stata实现[通俗易懂]作者:何庆红(北京大学中国卫生经济研究中心)连享会:(知乎|简书|码云|CSDN) 2019暑期“实证研究方法与经典论文”专题班-连玉君-江艇主讲 本推文介绍合成控制方法及其Stata的实现命令。合成控制方法(SyntheticControlMethod)由AbadieandGardeazabal(2003)提出。目前,该方法已被广泛使用。1.背景介绍…

    2022年4月27日
  • 时间复杂度和空间复杂度 如何计算出来_代码时间复杂度和空间复杂度

    时间复杂度和空间复杂度 如何计算出来_代码时间复杂度和空间复杂度时间复杂度和空间复杂度如何计算?推导算法:大O推导法时间复杂度定义常数阶线性阶对数阶平方阶小结空间复杂度定义推导算法:大O推导法1、用常数1取代运行时间中的所有加法常数2、在修改后的运行次数函数中,只保留最高阶项3、如果最高阶项存在且不是1,那么我们就去除于这个项相乘的常数。时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变…

    2022年10月28日
  • 学生信息管理系统的用例图和图书管理系统系统分析及用例图[通俗易懂]

    学生信息管理系统的用例图和图书管理系统系统分析及用例图[通俗易懂]练习一:请画出学生信息管理系统的用例图“学生信息管理系统”功能性需求包括以下内容:      (1)系统管理员登录后可以对班级的基本信息进行增加、删除、修改、查询等操作。学校领导登录后可以对班级基本信息进行查询操作。      (2)教师登录后可以对学生的考试成绩进行录入、删除、修改、查询等操作。学生登录后可以对考试成绩进行查询操作。      (3)学生登录后可以了解所有

    2022年5月26日

发表回复

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

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