在以前的熊猫版本中,只要值列表中至少包含一个现有键,则可以使用.loc[list-of-values]
。
但是,pandas换出了此功能,以支持reindex功能。我个人喜欢.loc
功能,因为它可以很好地处理索引切片和其他.loc
行为。想知道为什么他们决定这样做吗?
答案 0 :(得分:1)
此更改似乎将在the github上进行详细讨论。
(至少)有三种方式来缺少标签:
- 如果要求至少丢失一个标签,则会引发错误
- 如果仅要求缺少标签,则会引发错误
- a)...如果存在至少一个标签,则丢失的标签变为NaN (当前)
- b)...如果至少存在一个标签,则丢失的标签会被静默丢弃
- 您永远不会因缺少标签而引发错误
- a)...他们变成NaN
- b)。 ...而他们被默默地抛弃了
似乎普遍同意,选项2的混合行为在很大程度上没有记载,有些违反直觉。这是一个可能令人困惑的行为的示例,其中重新排序操作会更改是否引发错误:
例如,带有选项1.和3.。
pd.concat([chunk.loc[something] for chunk in chunks])
和
pd.concat(chunks).loc[something]
都返回相同的结果(或加注)。取而代之的是2.它实际上取决于丢失的标签如何跨块分布。
最终,这是设计哲学的问题,每种方法都各有利弊。
答案 1 :(得分:0)
根据我的理解
如果下面有Series
,并且索引为0-3,并且我们希望获得除索引之外的一些索引,我们应该reindex
s=pd.Series([1,2,3,4])
s.reindex([100])
100 NaN
dtype: float64
如果使用loc
,它将返回错误
s.loc[100]