dataframe中的loc,iloc,ix的比较

这三个第一次看,会了,下一次又忘了 - 。 - 我咋这么蠢,记录一下
最大的区别是 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了 = - =

猜你喜欢

转载自blog.csdn.net/qq_42896149/article/details/86524873