- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我来自 C++ 背景,最近开始学习 python。我正在研究索引和选择数据。我在 Pandas 库的 Series
、DataFrame
和 Panel
类中遇到了 .iloc[]
。我不明白什么是 .iloc
?它是功能还是属性?很多时候我错误地使用 ()
而不是 []
并且没有得到实际结果(但它不会抛出错误)。
例子:
In [43]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')
In [44]: s[s.index.isin([2, 4, 6])]
Out[44]:
4 0
2 2
dtype: int64
In [45]: s.iloc(s.index.isin([2,4,6]))
Out[45]: <pandas.core.indexing._iLocIndexer at 0x7f1e68d53978>
In [46]: s.iloc[s.index.isin([2,4,6])]
Out[46]:
4 0
2 2
dtype: int64
任何人都可以告诉我引用哪里可以研究更多关于此类运算符的信息。
最佳答案
实际答案:您应该将 iloc
和 loc
分别视为 python 列表和字典的 pandas 扩展,并将它们视为查找而不是函数或方法调用。因此,与 python 语法保持一致,始终使用 []
而不是 ()
。
>>> ser = pd.Series( { 'a':3, 'c':9 } )
>>> ser.loc['a'] # pandas dictionary syntax (label-based)
3
>>> ser.iloc[0] # pandas list/array syntax (location-based)
3
数据帧基本相同,只是多了一个维度来指定,这也是 iloc
和 loc
变得更有用的地方,但这超出了范围这个问题。
更深层的答案:如果您真的想更深入地理解这一点,您需要理解 __getitem__
。你也许可以开始 here一些基础知识。 second link中的答案@ayhan 在上面的评论中提供的内容也非常好,并且与您的问题非常相关。
关于python - loc 和 iloc 的类型是什么? (括号与圆括号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44674472/
我正在研究 Pandas 并研究汽车(一个 csv 文件)。我运行了以下命令: 1) cars.iloc[[3, 0]] Out[2]: cars_per_cap country dri
我无法使用 x.iloc[1]['x']=16 将 np.nan 的值更改为 16,但我可以使用 x['x'].iloc[1]=16 更改它。为什么?这两个表达式有什么区别? x = pd.DataF
我想对列中的值使用 iloc。 df1 = pd.DataFrame({'col1': ['1' ,'1','1','2','2','2','2','2','3' ,'3','3'],
所以我想选择数据帧的前 10 行,但通过特定的列名称(例如“价格”)。显然我可以这样做: df.iloc[0:10]['价格'] 但我想避免链式索引。有办法做到这一点吗?我无法使用 LOC,因为没有编
我有一个ProductDf,它有同一产品的多个版本。我想过滤产品的最后一次迭代。所以我这样做了如下: productIndexDf= ProductDf.groupby('productId').ap
这里是新手。 我正在尝试学习 Python 并使用数据集,我有点陷入工作的深渊。该语言显然非常强大,但与我以前体验过的任何其他语言都截然不同。 我需要以下方面的一些澄清/帮助/解释。 部分算法代码 h
我掉了前两个 栏目 在下面的代码中使用 iloc 方法没有任何问题。 eng_df.drop(eng_df.iloc[:,:2] , axis=1, inplace=True) 但我试图删除第一个 行
我可以使用:iloc[:, [1,2,3,27, 4:27] 我想按列索引对列重新排序并在输出中包含所有列 最佳答案 是的,你可以,但你需要构建一个没有切片的索引列表。 Numpy 有一个漂亮的 he
我可以使用:iloc[:, [1,2,3,27, 4:27] 我想按列索引对列重新排序并在输出中包含所有列 最佳答案 是的,你可以,但你需要构建一个没有切片的索引列表。 Numpy 有一个漂亮的 he
首先我应该说,我对 pandas 和 numpy(以及一般的机器学习)还很陌生。 我正在尝试学习一些基本的机器学习算法并正在做线性回归。我已经使用 matlab 完成了这个问题,但想尝试用 pytho
我在使用 .loc/.iloc 作为循环的一部分时遇到一些问题。这是我的代码的简化版本: INDEX=['0', '1', '2', '3', '4'] COLUMNS=['A','B','C'] d
鉴于下面的数据框,我想选择 A 列、D 列到 F 列。 import numpy as np import pandas as pd df = pd.DataFrame(np.random.randi
现在正在浏览 Kaggle 教程,虽然我通过查看输出和阅读文档了解了它的作用的基本概念,但我认为我需要确认这里发生的事情: predictors = ["Pclass", "Sex", "Age",
假设我有以下具有相同列名的 DataFrame test = pd.DataFrame([[1, 2, 3, np.nan, np.nan], [1, 2,
我想通过 iloc 更改我的 DataFrame 中某些列的数据类型。但是当我尝试这个时,dtype 没有改变(它仍然是对象): import pandas as pd names = ['sepal
我正在尝试拆分包含 1500 多家公司股票数据的 CSV 文件。第一列包含日期,后续列包含公司数据。 当我使用 iloc 功能将 CSV 文件拆分为包含较少列的较小文件时,它会生成一个更大的文件。 数
我从 pandas DataFrame 中选择 2 - end 列,iloc 为 d=c.iloc[:,2:] 现在如何将条件应用于此选择?例如,如果 column1==1。 最佳答案 您可以使用 D
我有一个 32 列的 df df.shape (568285, 32) 我正在尝试以特定方式重新排列列,并使用 iloc 删除第一列 df = df.iloc[:,[31,[1:23],24,25,
pandas的DataFrame对象,本质上是二维矩阵,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的名称。这样内部数据抽取既可以用“行列名称(对应.loc[]方法)”,也可以用“矩阵下标(
我有一个包含贡献者 ID 和贡献者消息的数据集。我想检索所有带有相同消息的样本,例如,contributor_message == '我支持这个提议,因为......'。 我使用 data.loc[d
我是一名优秀的程序员,十分优秀!