欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

dataframe中的loc,iloc,ix的比较

程序员文章站 2022-06-03 19:07:21
...

这三个第一次看,会了,下一次又忘了 - 。 - 我咋这么蠢,记录一下
最大的区别是 iloc里面的行标签只能是数字,就是 默认的那个0,1,2,3,
问题:如果是根据索引来的,那我重设置索引了之后,是不是还是可以用iloc呢来进行索引呢?
答案是 不可能的
多说无益:
直接上代码

import pandas as pd

df = pd.read_excel('11ts.xls')
df1 = df.dropna(axis=0, how='all')  # 用来删除缺失数据  返回值是删除后的df
df1.set_index(keys='股票代码',drop=False,inplace=True)    # 将股票代码这一列设置为index ,尝试用iloc
df2 = df1.iloc['601857-SHE']
print(df2)

恭喜:完美的报错了
错误是:TypeError: cannot do positional indexing on <class ‘pandas.core.indexes.base.Index’> with these indexers [601857-SHE] of <class ‘str’>
说的还是索引的问题 ok 改为loc

import pandas as pd

df = pd.read_excel('11ts.xls')
df1 = df.dropna(axis=0, how='all')  # 用来删除缺失数据  返回值是删除后的df
df1.set_index(keys='股票代码',drop=False,inplace=True)    # 将股票代码这一列设置为index ,尝试用iloc
df2 = df1.loc['601857-SHE']
print(df2)

结果如下:
ID 股票代码 股票简称 … 股息率TTM PEG EV/EBITDA
股票代码 …
601857-SHE 1.0 601857-SHE 中国石油 … 0.07 0.02 7.93
601857-SHE 2.0 601857-SHE 中国石油 … 0.07 0.02 7.96

[2 rows x 47 columns]
欧克 没有任何问题

最大的疑问就是设置了索引之后,iloc就不能用了,iloc还是只能支持数字,这样的问题改为loc就ok了 = - =

相关标签: dataframe