gpt4 book ai didi

python - bool 系列键将被重新索引以匹配 DataFrame 索引

转载 作者:IT老高 更新时间:2023-10-28 22:00:31 27 4
gpt4 key购买 nike

这是我遇到警告的方式:

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

a_list的类型是Int64Index,它包含一个行索引列表。所有这些行索引都属于 df

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

如果我单独执行以下命令,我不会收到任何警告:

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

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

Boolean Series key will be reindexed to match DataFrame index

此警告消息的含义是什么?会不会影响返回的结果?

最佳答案

尽管有警告,您的方法仍然有效,但最好不要依赖隐含的、不清楚的行为。

解决方案 1,将 a_list 中的索引选择设为 bool 掩码:

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

方案二,分两步进行:

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

解决方案 3,如果您想要单线,请使用找到的技巧 here :

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

警告来自 bool 向量 df.a_col.isnull()df 的长度,而 df.loc[a_list] a_list 的长度,即更短。因此,df.a_col.isnull() 中的某些索引不在 df.loc[a_list] 中。

pandas 所做的是在调用数据帧的索引上重新索引 bool 系列。实际上,它从 df.a_col.isnull() 获取与 a_list 中的索引对应的值。这可行,但行为是隐含的,并且将来很容易改变,所以这就是警告的内容。

关于python - bool 系列键将被重新索引以匹配 DataFrame 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710789/

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