Python 为什么要重新编制索引而不是使用.loc?

Python 为什么要重新编制索引而不是使用.loc?,python,pandas,Python,Pandas,在pandas的早期版本中,只要值列表至少包含一个现有键,就可以使用.loc[值列表] 但是,pandas已将此功能替换为reindex功能。我个人喜欢.loc功能,因为它与索引切片和其他.loc行为配合得很好。想知道他们为什么决定这么做吗?据我所知 如果您有下面的系列,并且索引为0-3,并且我们希望得到索引之外的一些索引,我们应该执行重新索引 s=pd.Series([1,2,3,4]) s.reindex([100]) 100 NaN dtype: float64 如果使用loc,它将

在pandas的早期版本中,只要值列表至少包含一个现有键,就可以使用
.loc[值列表]


但是,pandas已将此功能替换为reindex功能。我个人喜欢
.loc
功能,因为它与索引切片和其他
.loc
行为配合得很好。想知道他们为什么决定这么做吗?

据我所知

如果您有下面的
系列
,并且索引为0-3,并且我们希望得到索引之外的一些索引,我们应该执行
重新索引

s=pd.Series([1,2,3,4])
s.reindex([100])
100   NaN
dtype: float64
如果使用
loc
,它将返回错误

s.loc[100]

这一变化似乎将在上一节中详细讨论

有(至少)三种方法可以处理缺少的标签:

  • 如果请求至少缺少一个标签,则会引发错误
  • 如果仅请求缺少标签,则会引发错误
    • a) 。。。如果至少存在一个标签,则缺少的标签将变为NaN(当前)
    • b) 。。。而如果至少存在一个标签,则丢失的标签将自动删除
  • 您永远不会因缺少标签而引发错误
    • a) 。。。他们变成了南
    • b) 。。。它们静静地落下
  • 似乎大家普遍认为,方案2的混合行为基本上没有记录在案,而且有点违反直觉。下面是一个可能令人困惑的行为示例,其中重新排序操作会改变是否引发错误:

    例如,使用选项1。三,

    pd.concat([chunk.loc[something]表示块中的块])

    pd.concat(chunks.loc[something]

    两者都返回相同的结果(或raise)。取而代之的是2。这实际上取决于丢失的标签如何分布在块中


    归根结底,这是设计理念的问题,每种方法都有其优缺点。

    你能举一个例子,说明你想用
    .loc
    做什么,但你不能再做了吗?建议仍然可以传递一系列标签。从中,熊猫团队似乎希望对
    loc