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了 = - =

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值