【问题标题】:boolean selection with loc in python在 python 中使用 loc 进行布尔选择
【发布时间】:2020-04-02 19:51:04
【问题描述】:
s = pd.Series(np.nan, index=[49,48,47,46,45, 1, 2, 3, 4, 5])

s的输出是

49   NaN
48   NaN
47   NaN
46   NaN
45   NaN
1    NaN
2    NaN
3    NaN
4    NaN
5    NaN

s.loc[[False,True]]

它给出的输出为-:

48   NaN

.loc 通过标签访问一组行和列,我给出了 false 和 true 的列表,它也不等于被切片的轴的长度。 我的疑问是我们是否提供了布尔数组列表来定位它使用位置而不是标签对数据帧/系列进行切片?

【问题讨论】:

  • 不清楚你想在这里返回什么。
  • s.loc[[False,True]] 不会(或至少不应该)返回您所说的内容

标签: python pandas


【解决方案1】:

我在运行这个程序时肯定会出错:

import pandas as pd
import numpy as np
s = pd.Series(np.nan, index=[49,48,47,46,45, 1, 2, 3, 4, 5])
s.loc[[False,True]]

错误(如预期)是:

IndexError: Item wrong length 2 instead of 10.

也许您的问题特定于某个版本的熊猫?也许是旧的?我用的是熊猫版0.25.3

【讨论】:

  • 这曾经可以工作,但它是一个已修复的错误:github.com/pandas-dev/pandas/pull/26911 OP 所做的基本上等同于s.loc[[False, True] + [False] * (len(s) - 2)],它实际上只返回系列中的第二个元素,而我'我不确定他们在这里还期待什么。
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 2017-03-05
  • 2018-12-04
  • 2018-08-18
  • 2019-04-17
  • 2019-03-06
  • 2019-05-22
  • 2016-08-30
相关资源
最近更新 更多