gpt4 book ai didi

python - pandas 中 df.reindex() 和 df.set_index() 方法的区别

转载 作者:太空狗 更新时间:2023-10-29 17:58:25 26 4
gpt4 key购买 nike

我对此感到困惑,这很简单,但我没有立即在 StackOverflow 上找到答案:

  • df.set_index('xcol') 使列'xcol'成为索引(当它是df的列时)。

  • 但是,
  • df.reindex(myList) 从数据帧外部获取索引,例如,从我们在别处定义的名为 myList 的列表中获取索引。

但是,df.reindex(myList) 也会将值更改为 NA。一个简单的替代方法是:df.index = myList

我希望这篇文章能澄清它!也欢迎对这篇文章进行补充!

最佳答案

您可以在一个简单的示例中看到差异。让我们考虑这个数据框:

df = pd.DataFrame({'a': [1, 2],'b': [3, 4]})
print (df)
a b
0 1 3
1 2 4

然后索引为 0 和 1

如果您对列 'a' 使用 set_index,则索引为 1 和 2。如果您执行 df.set_index('a').loc[1,'b' ],你会得到 3.

现在如果你想对相同的索引 1 和 2 使用 reindex,例如 df.reindex([1,2]),当你做 df.reindex([1,2]).loc[1,'b']

发生的事情是 set_index 已经将之前的索引 (0,1) 替换为 (1,2)(来自“a”列的值),而没有触及“b”列中值的顺序'

df.set_index('a')
b
a
1 3
2 4

虽然 reindex 更改了索引,但保留 'b' 列中的值与原始 df 中的索引相关联

df.reindex(df.a.values).drop('a',1) # equivalent to df.reindex(df.a.values).drop('a',1)
b
1 4.0
2 NaN
# drop('a',1) is just to not care about column a in my example

最后,reindex 更改索引的顺序而不更改与每个索引关联的行的值,而 set_index 将使用列的值更改索引,不触及数据框中其他值的顺序

关于python - pandas 中 df.reindex() 和 df.set_index() 方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50741330/

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