错误:布尔序列键将被重新索引以匹配数据框索引

3

我正在尝试使用多个条件来选择pandas DataFrame上的多个列,使用以下代码:

df = pd.DataFrame(wks.get_all_records())
print(df[df["COLUMN_NAME"] == 1][df["COLUMN_NAME_2"] == "CONDITION_2"][["COL_A", "COL_B", "COL_C"]])

它确实可以工作,但也返回:


UserWarning: Boolean Series key will be reindexed to match DataFrame index

我正在尝试使用条件过滤DataFrame并将其写入Excel工作表,因此我不确定这个警告之后会有什么影响。


3
推荐的方法是使用.locprint(df.loc[((df["COLUMN_NAME"] == 1) & (df["COLUMN_NAME_2"] == "CONDITION_2")), ["COL_A", "COL_B", "COL_C"]]) - sushanth
这个回答解决了你的问题吗?布尔系列键将重新索引以匹配数据帧索引 - cottontail
2个回答

0

尽管有这个警告,但您的应用程序将正常工作。也许这个解决方案对您有所帮助。


0
这是对@sushanth在问题的第一条评论中回答的扩展。周围还有其他答案,但我没有发现有同样的问题。我想要满足布尔条件的列的子集,并且找不到如何做到这一点。警告意味着行为可能会在以后更改,现在它将隐式执行,这对于代码可维护性来说并不好。
df.loc[(boolean series), list_col_header]

那么就按照这个顺序

df.loc[((df["COLUMN_NAME"] == 1) & 
         (df["COLUMN_NAME_2"] == "CONDITION_2")), ["COL_A", "COL_B", "COL_C"]]

不要忘记将布尔系列放在括号中,每个布尔条件也要放在括号中。使用逻辑运算符,如& |,而不是and或or。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接