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


相关推荐

  • java中scanner是什么意思_在什么情况下java中的Scanner输入语句

    java中scanner是什么意思_在什么情况下java中的Scanner输入语句满意答案gy6g8952842018.01.28采纳率:56%等级:9已帮助:413人publicfinalclassScannerextendsObjectimplementsIterator一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。Scanner使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的next方法将得到的…

    2022年7月7日
    38
  • pycharm 激活码 2021【2021.7最新】

    (pycharm 激活码 2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    62
  • c++禁止隐式转换_无法将int隐式转换为类

    c++禁止隐式转换_无法将int隐式转换为类C++有一个很方便的功能—隐式转换,比如有一个函数voidfunc(doublef);调用它的时候func(5);func(5.0);都是有效的。但有时候,这个功能就很麻烦了。比如:classA{public:A(conststring&v){///…}}void…

    2022年10月11日
    1
  • 应用程序未启动_应用程序未能启动怎么办

    应用程序未启动_应用程序未能启动怎么办无法启动已发布的应用程序

    2022年4月20日
    61
  • python对文件的操作

    python对文件的操作一.python21.将字符串写入文件#-*-coding:utf-8-*-data_str=”Helloworld!!!”file_object=open(‘D:/test.txt’,’w’)file_object.write(data_str)file_object.close()2.以追加的方式写入文件#-*-coding:utf-8…

    2022年5月25日
    41
  • Java程序概述

    Java程序概述Java程序概述一、Java开发环境1、Java程序编译执行的过程2、Java平台概述3、JDK部分常用工具二、Application三、Applet四、Servlet五、JSP和JavaBean六、脚本一、Java开发环境1、Java程序编译执行的过程Java程序在编译执行过程中,首先把源文件(.java文件)编译成字节码文件,即类文件(.class);然后由解释器负责解释执行类文件。2、Java平台概述Java平台包括Java应用程序接口(API)和Java虚拟机(JavaVirtual

    2022年7月7日
    24

发表回复

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

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