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

布尔系列键将重新索引以匹配DataFrame索引

薛祯
2023-03-14
问题内容

这是我遇到错误的方式:

df.loc[a_list][df.a_col.isnull()]

类型a_listInt64Index,其中包含行索引列表。所有这些行索引都属于df

df.a_col.isnull()是我需要过滤的条件。

如果我分别执行以下命令,则不会收到任何警告:

df.loc[a_list]
df[df.a_col.isnull()]

但是,如果将它们放在一起df.loc[a_list][df.a_col.isnull()],则会收到警告消息(但可以看到结果):

布尔系列键将重新索引以匹配DataFrame索引

此错误消息是什么意思?它会影响返回的结果吗?


问题答案:

尽管有警告,您的方法仍然可以使用,但是最好不要依赖隐式,不清楚的行为。

解决方案1 ,在a_list布尔掩码中选择索引:

df[df.index.isin(a_list) & df.a_col.isnull()]

解决方案2 ,分两个步骤进行:

df2 = df.loc[a_list]
df2[df2.a_col.isnull()]

方案三
,如果你想要一个内胆,使用一个小技巧发现这里:

df.loc[a_list].query('a_col != a_col')

警告来自以下事实:布尔向量df.a_col.isnull()的长度为df,而df.loc[a_list]长度为a_list,即较短。因此,中的某些索引df.a_col.isnull()不在中df.loc[a_list]

熊猫所做的是在调用数据帧的索引上对布尔系列进行重新索引。实际上,它来自df.a_col.isnull()与中的索引相对应的值a_list。这是可行的,但是行为是隐式的,并且将来很容易更改,因此这就是警告的含义。



 类似资料:
  • 本文向大家介绍pandas 布尔索引,包括了pandas 布尔索引的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用布尔数组选择数据框的行和列。 有关熊猫文档的更多信息。

  • 问题内容: 这可能是一个非常愚蠢的问题,但是对数据库表中的布尔字段建立索引是否会有很多好处? 在常见情况下,例如标记为“无效”的“软删除”记录,因此大多数查询都包含,这将有助于对该字段进行单独索引,还是应将其与其他常见搜索字段组合在一起?不同的索引? 问题答案: 没有。 您可以对要搜索的字段具有较高的选择性/基数进行索引。几乎所有表都消除了布尔字段的基数。如果有的话,它将使您的写入速度变慢(降低的

  • 问题内容: 我创建了一个从,当我重新采样一些数据,象这样一个数:其中是: 这产生了一个看起来像这样的系列: 索引看起来像: 我不希望第二列作为索引。理想情况下,我将第1列作为“日期”,将第2列作为“销售”(删除索引的第二层)。我不太清楚如何重新配置​​索引。 问题答案: 只需致电: 有多种删除列的方法: 调用两次并指定一列: 重置索引后删除列: 重置后致电: 然后,在重置索引后,只需重命名列

  • In[1]: import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline 1. 计算布尔值统计信息 # 读取movie,设定行索引是movie_title In[2]: pd.options.display.max_colum

  • 如何将数据帧的索引写入自身? 例如: 我想写一个名为index的列,其中包含df的索引值:

  • 问题内容: 我有一个使用该函数构建的数组,但是看到我如何将其与随机/动态数据一起使用,我看到索引不断变化: 我需要始终从0开始对数组进行排序。我正在测试不同的数据,有时它从0开始,而在其他测试中,它从不同的数字开始。我进行了研究,发现数组从零开始,但似乎仅适用于该用户的特定情况。 我怎样才能做到这一点? 问题答案: $your_new_array = array_values($your_old_