【问题标题】:'Unalignable boolean Series key provided' while doing selection进行选择时“提供了不可对齐的布尔系列键”
【发布时间】:2017-09-13 18:57:59
【问题描述】:

我只是想用 pandas 对一些数据进行分类 基本上我的数据是一个字符串,我想根据 X 个第一个字符的值来修改它。

我试过这个:

data['BO In Code'].loc[data['BO In Code'][:2]=='XU']=1

提供了不可对齐的布尔系列键

这个:

data['BO In Code'].loc[str(data['BO In Code'])[:2]=='XU']=1

还有这个:

data['BO In Code'].loc[data['BO In Code'].index[:2]=='XU']=1

给了我:

'不能使用单个 bool 来索引 setitem'

【问题讨论】:

标签: python pandas


【解决方案1】:

您需要使用str 字符串访问器

data.loc[data['BO In Code'].str[:2]=='XU', 'BO In Code'] = 1

解释

.loc 用于数据帧可以使用两个索引器。这些索引器可以是单个索引值、索引值列表或与被切片的相应维度等长的布尔数组。

在这种情况下,第一个索引器是一个布尔数组,其中每个值都是 'BO In Code' 列中的前 2 个字符是否等于 'XU' 的真值。我们使用它来过滤数据框的行。我们仍然需要指定我们想要的列。恰好我们想要'BO In Code'

所以对'BO In Code' 的第一次引用是查找布尔切片。对'BO In Code' 的第二个引用是指定我们想要的列。它不必是同一列。

【讨论】:

  • 为什么我必须在最后再次输入“BO in Code”?没有它,它不是已经工作了吗?
  • 实际上当我放它时有一个索引错误,当我不放它时它工作正常,所以我要摆脱第二个
猜你喜欢
  • 1970-01-01
  • 2018-04-27
  • 2021-04-20
  • 2018-01-03
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 2023-02-03
相关资源
最近更新 更多