' Unalignable boolean Series key提供'在做选择时

时间:2017-04-18 04:39:04

标签: python 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'

1 个答案:

答案 0 :(得分:3)

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

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

解释

对于数据帧,

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

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

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