2017-04-18 52 views
2

我只是试图用熊猫分类一些数据 基本上我的数据是一个字符串,我想根据X首字符的值来修改它。'提供的不可对齐的布尔系列键'在做选择时

我尝试这样做:

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

Unalignable布尔系列键提供

此:

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 

递给我:

'不能用单一的布尔索引到setitem'

+0

这将帮助你:http://stackoverflow.com/questions/33817842/keyerror-when-using-boolean-filter-on-pandas-data-frame –

回答

3

您需要使用str串访问

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

解释

.loc对于数据帧可能需要两个索引器。这些索引器可以是单个索引值,索引值列表,也可以是等长的布尔数组,作为对应的维度被切片。

在这种情况下,第一分度器是一个布尔阵列,其中每个值是在列前两个字符是否等于'XU'的真相。我们用它来过滤数据帧的行。我们仍然需要指定我们想要的列。发生我们想要。

因此,的第一个参考是找到布尔切片。第二个参考是指定我们想要的列。它不一定是同一列。

+0

为什么我必须再次将'代码'BO最后 ?没有它,它已经不工作了吗? –

+0

@Mayeulsgc查看更新后的帖子 – piRSquared

+0

其实当我把它有一个索引错误,当我不这样做是好的,所以我要摆脱第二个 –