我对此感到困惑,这很简单,但我没有立即在 StackOverflow 上找到答案:
df.set_index('xcol')
使列'xcol'
成为索引(当它是df的列时)。df.reindex(myList)
但是,从数据框外部获取索引,例如,从我们在其他地方定义的名为myList
的列表中获取索引。
但是, df.reindex(myList)
也将值更改为 NA。一个简单的替代方法是: df.index = myList
我希望这篇文章能澄清它!本帖也欢迎补充!
原文由 Ricardo Guerreiro 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在一个简单的示例中看到差异。让我们考虑这个数据框:
索引则为 0 和 1
如果您将
set_index
与列“a”一起使用,则索引为 1 和 2。如果您这样做df.set_index('a').loc[1,'b']
,您将得到 3。现在,如果你想使用
reindex
具有相同的索引 1 和 2,例如df.reindex([1,2])
,你会得到 4.0 当你做df.reindex([1,2]).loc[1,'b']
发生的事情是
set_index
已经将之前的索引 (0,1) 替换为 (1,2)(来自“a”列的值),而没有触及“b”列中值的顺序while
reindex
更改索引,但保留“b”列中的值与原始 df 中的索引相关联最后,
reindex
更改索引的顺序而不更改与每个索引关联的行的值,而set_index
将使用列的值更改索引,而不会改变索引的顺序数据框中的其他值