当前位置: 首页 > 面试题库 >

df.reindex()和df.set_index()方法在熊猫中的区别

鲁光霁
2023-03-14
问题内容

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

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

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

我希望这篇文章能澄清它!也欢迎添加此帖子!


问题答案:

您可以通过一个简单的示例看到差异。让我们考虑以下数据帧:

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

索引则为0和1

如果set_index与列“ a”一起使用,则索引为1和2。如果这样做df.set_index('a').loc[1,'b'],则得到3。

现在,如果您要使用reindex相同的索引1和2(例如)df.reindex([1,2]),则在执行操作时将获得4.0df.reindex([1,2]).loc[1,'b']

发生的事情是,set_index用(1,2)(“ a”列中的值)替换了先前的索引(0,1),而没有触及“ b”列中的值的顺序

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

同时reindex更改索引,但将与原始df中的索引关联的列“ b”中的值保留

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将使用列的值更改索引,而无需触及数据框中其他值的顺序



 类似资料:
  • 问题内容: 我自己找到了一种从熊猫数据框中删除nan行的方法。给定一个具有包含nan值的列的数据框,是否有一种更优雅的方法来删除该列中具有nan值的每一行? 问题答案: 使用dropna: 如果所有标签均为nan或任何标签均为nan,则可以将param传递给drop 希望这能回答你的问题! 编辑1: 如果您要删除仅包含特定列中的值的行(如J. Doe在下面的答案中所建议),则可以使用以下命令:

  • 问题内容: 如果我只是通过类似下面的函数,DataFrame.aggregate()和DataFrame.apply()函数之间的返回值的(类型)是否有任何区别 因为返回值看起来几乎一样。并且文档仅告诉: apply()-> apply:Series或DataFrame 聚合()->聚合:DataFrame 问题答案: agg有两种版本(aggregate的缩写)和适用:第一个版本在groupby

  • 问题内容: Numpy似乎在和类型之间进行了区分。例如我可以做:: 其中dtype(’S’)和dtype(’O’)分别对应于和。 但是熊猫似乎就缺少了区分,并要挟到。:: 强制类型也无济于事。:: 此行为有任何解释吗? 问题答案: Numpy的字符串dtypes不是python字符串。 因此,故意使用本机python字符串,这需要对象dtype。 首先,让我演示一下numpy的字符串与众不同的含义

  • 我正在从pandas输出一个csv文件,其中包含一些用于latex报告的调查文本。一些响应在其响应中带有逗号,因此熊猫将数据输出为 通过将字段用双引号括起来,显然可以处理字段中的逗号。 我希望上面看起来像这样: 通过将所述字段包装在{}中,因为这是latex包可以理解的分隔符。 有没有办法告诉熊猫。要做这个吗? 我已经尝试了以下方法 当然,当我需要“}”时,它会用“{”关闭文本包装 更新当我使用p

  • 问题内容: 使得更换不区分大小写似乎并不在下面的例子中(我要替换的效果 JR。 或 小 与 JR ): 为什么?我有什么误会? 问题答案: 该参数实际上是一种方便的选择。如果替换不是基于正则表达式的,则与替换无关。 因此,当时,这些是您可能的选择: 要么, 您还可以通过将不区分大小写标志作为模式的一部分纳入,而变得厚脸皮并绕过两个关键字参数。看到 注意 您将需要在正则表达式模式下转义句点,因为未转

  • 问题内容: 有没有办法在熊猫中舍入单个列而不影响数据框的其余部分? df.value1.apply(np.round)给出 使数据看起来像这样的正确方法是什么: 问题答案: 你很亲密 您将此回合应用于给出的一系列值。因此,返回类型为Series。您需要将该系列分配回该数据框(或具有相同索引的另一个数据框)。 同样,有一种方法基本上是的简写。

  • 我正在使用此数据框: 我想通过名称和水果将其聚合,得到每个名称的水果总数。 我试着按名字和水果分组,但如何得到水果的总数呢。

  • 我试图将x轴和y轴标签以及标题放在我通过熊猫创建的三面板直方图上,但似乎无法正确放置。我在标题和三个图中最后一个的x轴标签中得到的唯一结果。我想要一个总的标题,XLabel和YLabel。制作该图的代码如下。有什么建议吗?