gpt4 book ai didi

python - df.loc[anything].index 和 iloc 有什么不同?

转载 作者:行者123 更新时间:2023-12-01 08:26:42 30 4
gpt4 key购买 nike

我很困惑,因为当我删除一行时,但我可以在删除它后继续使用 df.iloc[ ] 查询该行,但脚本显示信息是下一行。

我理解了 ilow = 行索引,但不理解,你能向我解释一下错误是什么吗?

例如:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(low=0, high=6, size=(10,4)),columns ={'a','b','c','d'})

df

a   b   c   d
  1. 0 3 0 4
  2. 0 0 1 1
  3. 0 1 1 2
  4. 1 1 5 5
  5. 4 2 3 5
  6. 4 2 0 2
  7. 2 1 1 4
  8. 4 3 2 4
  9. 5 2 5 5
  10. 2 5 0 0

    df.loc[df['c']==5].index

Int64Index([3, 8], dtype='int64')

df.iloc[3]

一个1乙1c 5d 5名称:3,数据类型:int64

df = df.drop(df.loc[df['c']==5].index, axis = 0)

df

a   b   c   d
  1. 0 3 0 4
  2. 0 0 1 1
  3. 0 1 1 2
  4. 4 2 3 5
  5. 4 2 0 2
  6. 2 1 1 4
  7. 4 3 2 4
  8. 2 5 0 0

    df.iloc[3]

一个4乙2丙3d 5名称:4,数据类型:int64

在这种情况下,我预计会出现异常!

最佳答案

df.loc 根据标签(索引、列名称)返回数据。 iloc 返回纯粹基于从 0 开始的位置(索引位置、列位置)的数据。

您的第一行代码是根据条件创建数据帧的切片。 df.index 返回切片的索引。

df.loc[df['c']==5].index
Int64Index([3, 8], dtype='int64')

第二行,由于您只传递了一个值,pandas 假定它是索引并返回指定索引处的所有元素。

df.iloc[3]

a 1
b 1
c 5
d 5

一旦删除索引号 3,df.iloc[3] 将再次返回第 4 行,因为第 4 个位置仍然存在。另一方面,使用 loc 将抛出 keyerror,因为数据帧中不再有索引号 3。

df.loc[3]
KeyError: 'the label [3] is not in the [index]'

关于python - df.loc[anything].index 和 iloc 有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54191204/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com