python - 轴 1 上带有 boolean 数组的 Pandas loc() 方法

标签 python arrays pandas boolean pandas-loc

我正在试验 Pandas loc() 方法,使用 boolean 数组作为参数。

我创建了一个小数据框来玩:

    col1    col2    col3    col4
 0  a        1       2       3
 1  b       NaN     NaN      6
 2  c       NaN      8       9
 3  d       NaN     11       12
 4  e       13       14      15
 5  f       17      18       19
 6  g       21  2    2       23

还有一个 boolean 数组,用于在轴 1 上对多个列进行子集化:

 a1 = pd.Series([True, False, True, False])

然后我尝试了:

 df.loc[: , a1]

我收到一条错误消息:

IndexingError: Unalignable boolean Series key provided

如何使用 loc() 将 boolean 数组应用于多个列的子集?

最佳答案

您需要转换 Seriesnumpy array通过 values :

print (df.loc[: , a1.values])
  col1  col3
0    a   2.0
1    b   NaN
2    c   8.0
3    d  11.0
4    e  14.0
5    f  18.0
6    g   2.0

或需要添加index通过 df.columns对齐 indexSeriescolumnsDataFrame :

a1 = pd.Series([True, False, True, False], index=df.columns)
print (df.loc[: , a1])
  col1  col3
0    a   2.0
1    b   NaN
2    c   8.0
3    d  11.0
4    e  14.0
5    f  18.0
6    g   2.0

关于python - 轴 1 上带有 boolean 数组的 Pandas loc() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511601/

相关文章:

python - 在python中使用VTK找到3D空间中两个圆柱体的交集

python - Redis中删除所有元素的方法

python - 在 Azure Devops 或 Azure 机器学习中使用 Neo4j

javascript - 使用重复键连接对象中的 2 个数组

python - 基于可能值的自定义列表的 Groupby Pandas 数据框

python - Pandas DataFrame.add() -- 忽略缺失的列

java - 如何使用 Java 中的多线程实现 2D 方阵乘法?

javascript - 使用 spread 元素合并 javascript 数组中的值

python - Pandas:从返回数据创建索引时间序列 [从 100 开始]

python - 从 url 下载 csv 并使其成为数据框 python pandas