gpt4 book ai didi

python - 为什么 .ix 包含在索引范围的末尾?

转载 作者:行者123 更新时间:2023-11-28 22:26:30 25 4
gpt4 key购买 nike

Python 版本:2.7.6 NumPy 版本:1.10.2 Pandas :0.17.1

我知道 .ix 现在已被弃用,但我在遗留系统上工作并看到 .ix 的这种行为,我很困惑

# Native Python List Indexing is exclusive on the end index
[0, 1, 2, 3][0:1] # returns [0] indexes with [0, 1)
# Native Numpy
import numpy as np
numpyArray = np.reshape(np.arange(4), (2, 2))
numpyArray[0:1, 0:1] # returns array([[0]]), indexes with [0, 1) in rows and [0, 1) in columns
####### Pandas #######
import pandas as pd
dataFrame = pd.DataFrame(numpyArray)
# Pandas with iloc #
dataFrame.iloc[0:1, 0:1] # returns 0, indexes with [0, 1) in rows and [0, 1) in columns
# Pandas with ix #
dataFrame.ix[0:1, 0:1] # returns [[0, 1], [2, 3] indexes with [0, 1] in rows and [0, 1] in columns

最佳答案

.ix是基于标签的索引(与 .loc 相同),文档状态包括停止范围值,这与 iloc 不同,iloc 是开闭范围,因此不包括停止范围值,这是设计使然

这样做的原因是因为如果您的索引是例如字符串,那么在您不知道结束范围值应该是什么的情况下选择一个范围会有问题:

In[274]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'), index=list('vwxyz'))
df

Out[274]:
a b c
v -0.488627 0.213183 0.224104
w -0.200328 -1.138937 0.815568
x -1.131868 -0.562758 0.088719
y 0.120701 -0.863737 0.246295
z -0.808140 0.253376 0.645974

In[275]:
df.ix['w':'y']

Out[275]:
a b c
w -0.200328 -1.138937 0.815568
x -1.131868 -0.562758 0.088719
y 0.120701 -0.863737 0.246295

如果它不包括最后一行的结束值,您需要知道必须传递 'z' 才能返回 'z 之前的标签' 得到上面的结果

更新

请注意 ix0.20.1 后已弃用,您应该使用 loc

关于python - 为什么 .ix 包含在索引范围的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724152/

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