Python 3.x IndexingError:作为索引器提供的不可对齐的布尔序列(布尔序列的索引和索引对象的索引不匹配)

Python 3.x IndexingError:作为索引器提供的不可对齐的布尔序列(布尔序列的索引和索引对象的索引不匹配),python-3.x,pandas,Python 3.x,Pandas,我试图从dataframe中获取与另一列的相关性大于以下特定值的列 df.loc[:, (df.corr()['col'] <= -0.05) | (df.corr()['col'] >= 0.05)] 另外,如果我尝试选择方差>1的列,我会得到相同的错误 df.loc[;df.var() > 1 ]. 为什么我会出现索引错误。如果dataframe的列与另一列的相关性介于-0.05和0.05之间,我想过滤这些列 有人能帮忙解决这个问题吗。我不确定哪里出了问题我想我找到了你

我试图从dataframe中获取与另一列的相关性大于以下特定值的列

df.loc[:, (df.corr()['col'] <= -0.05) | (df.corr()['col'] >= 0.05)]
另外,如果我尝试选择方差>1的列,我会得到相同的错误

df.loc[;df.var() > 1 ].
为什么我会出现索引错误。如果dataframe的列与另一列的相关性介于-0.05和0.05之间,我想过滤这些列


有人能帮忙解决这个问题吗。我不确定哪里出了问题

我想我找到了你的问题所在

首先,我尝试构建自己的测试集,不幸的是,一切都很顺利:

df = pd.DataFrame({
    "col": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
    "A": [1.1, 1.0, 1.0, 1.0, 1.0, 1.1],
    "B": [1.0, 2.1, 3.0, 3.9, 5.0, 6.0]
})
df.loc[:, (df.corr()['col'] <= -0.05) | (df.corr()['col'] >= 0.05)]
但是,在再次阅读您的错误之后,我想可能您的数据中有一些列,
corr()
方法只是忽略了这些列,例如带有
对象的列

如果我使用文本列构建一个新的测试集,我会得到与您相同的错误:

df = pd.DataFrame({
    "col": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
    "A": [1.1, 1.0, 1.0, 1.0, 1.0, 1.1],
    "B": [1.0, 2.1, 3.0, 3.9, 5.0, 6.0],
    "C": ["A", "B", "C", "D", "E", "F"]
})
df.corr()['col'] >= 0.05
df.loc[:, (df.corr()['col'] <= -0.05) | (df.corr()['col'] >= 0.05)]
解决此问题的一种方法是:

df = df.drop(columns=df.corr().query("-0.05 < col < 0.05").index)
df=df.drop(columns=df.corr().query(“-0.05

注意:请提醒,如果您提供非工作代码的完整示例,您将获得更快、更相关的答案,以便您的错误可以轻松再现;)

我想我发现了你的问题所在

首先,我尝试构建自己的测试集,不幸的是,一切都很顺利:

df = pd.DataFrame({
    "col": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
    "A": [1.1, 1.0, 1.0, 1.0, 1.0, 1.1],
    "B": [1.0, 2.1, 3.0, 3.9, 5.0, 6.0]
})
df.loc[:, (df.corr()['col'] <= -0.05) | (df.corr()['col'] >= 0.05)]
但是,在再次阅读您的错误之后,我想可能您的数据中有一些列,
corr()
方法只是忽略了这些列,例如带有
对象的列

如果我使用文本列构建一个新的测试集,我会得到与您相同的错误:

df = pd.DataFrame({
    "col": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
    "A": [1.1, 1.0, 1.0, 1.0, 1.0, 1.1],
    "B": [1.0, 2.1, 3.0, 3.9, 5.0, 6.0],
    "C": ["A", "B", "C", "D", "E", "F"]
})
df.corr()['col'] >= 0.05
df.loc[:, (df.corr()['col'] <= -0.05) | (df.corr()['col'] >= 0.05)]
解决此问题的一种方法是:

df = df.drop(columns=df.corr().query("-0.05 < col < 0.05").index)
df=df.drop(columns=df.corr().query(“-0.05

注意:请提醒,如果您提供非工作代码的完整示例,您将获得更快、更相关的答案,以便您的错误可以轻松再现;)

有人能在这里帮忙吗