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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows Server服务器上DNS服务器配置方法[通俗易懂]

    Windows Server服务器上DNS服务器配置方法[通俗易懂]图解WindowsServer服务器上DNS服务器配置 本篇经验将和大家介绍WindowsServer服务器上DNS服务器配置的步骤,希望对大家的工作和学习有所帮助!DNS服务器安装 1  打开“添加角色”,安装DNS服务。点击下一步,安装,开始启动dns服务器进行配置,如下图所示: 2 首先配置dns服务器,如下图所示: 3  进…

    2022年6月4日
    45
  • H2 数据库简介_polardb 数据库

    H2 数据库简介_polardb 数据库H2数据库H2是使用Java开发的内嵌式数据库,开源。支持内存、文件等多种模式。常用于开发和测试环境。特性读操作快,写操作不如SQLite支持全文检索(提供了内置全文检索和ApacheLuncene的全文检索)可以通过浏览器操作数据库运行模式EmbeddedMode内嵌模式ServerModel服务器模式混合模式下载目前最新版本是1.4.200,于2019/10/14发布。Windows安装版本:https://h2database.co

    2022年10月12日
    3
  • java 程序中的指令重排是什么_指令和程序的区别和联系

    java 程序中的指令重排是什么_指令和程序的区别和联系Java中有两个编译期:1、编译期:调用javac命令将Java代码编译成Java字节码;2、运行期:JIT编译器将字节码编译成机器码。指令重排指令重排是指在程序执行过程中,为了性能考虑,编译器和CPU可能会对指令重新排序。…

    2022年10月17日
    3
  • vue中的横向排列_vue + ElementUI 的横向表格代码「建议收藏」

    vue中的横向排列_vue + ElementUI 的横向表格代码「建议收藏」{{tableData[index*2-2].key}}{{tableData[index*2-2].value}}{{tableData[index*2-1]!==undefined?tableData[index*2-1].key:‘‘}}{{tableData[index*2-1]!==undefined?tableData[index*2-1].value:‘‘}}…

    2022年8月11日
    54
  • javascript运算符的优先级

    最基木的运算符优先级就是所谓的“先乘除,后加减”。对于优先顺序处于同一层次上的运算符,按照从左到右出现的顺序计算。下面给出javascript定义的所有运算符的优先级。运算符优先顺序成员选择、括号、

    2021年12月21日
    44
  • 大数据简介

    大数据简介目录1、大数据概述传统数据处理介绍2、什么是大数据?(BigData)3、传统数据与大数据的对比4、大数据的特点数据集主要特点 其他特征 传统数据与大数据处理服务器系统安装对比5、大数据生态系统新技术6、大数据技术为什么快?大数据技术快的原因1、大数据概述 传统数据处理介绍 数据来源:…

    2022年5月4日
    47

发表回复

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

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