2017-10-28 57 views
0

我有一种使用部分字符串匹配来分配列的方法。我现在已经扩展了该方法,通过使用带有字符串列表使用for循环按照本例:Pandas使用for循环设置部分字符串匹配的列:使用包含NaN的向量进行索引错误

是myDF:

  mytestdata Colourtoassign 
0 blah Orange blah   FALSE 
1  blah blah Red   FALSE 

Colourtoassign是一列要在部分字符串分配比赛中使用列表colourList循环:

[ '黑', '蓝', '绿色', '橙', '粉红', '紫', '红', '白色', '黄色', '粉色']

我要把它放到我的for循环如下:

for i in range(len(colourList)-1): 
mydf.loc[mydf['mytestdata'].str.contains(colourList[i]), 'Colourtoassign'] = colourList[i] 

屈服的是myDF期望的结果:

  mytestdata Colourtoassign 
0 blah Orange blah   Orange 
1  blah blah Red   Red 

但是,当我尝试使用它与我的实际数据按照下面的示例:

for i in range(len(cableList)-1): 
ordersTwo.loc[ordersTwo['Variation details'].str.contains(cableList[i]), 'VariationStringLabel_FULL'] = cableList[i] 

我得到错误ValueError:无法用包含NA/NaN值的向量索引

该数据帧的相关栏目:

ordersTwo [ '变化细节']:

0             NaN 
1             NaN 
2 [Cable Length (metres):3M (9ft, 10in),Colour:Hot Pink] 
3 [Cable Length (metres):2M (6ft, 7in),Colour:Hot Pink] 

ordersTwo [ 'VariationStringLabel_FULL']:

0 FALSE 
1 FALSE 
2 FALSE 
3 FALSE 

虽然我不相信它是发生索引的矢量,我尝试删除命令的NaN's ['Variation details'] using ordersTwo ['Variation details']。fillna(0,inplace = True)但结果是一样的。

我的代码或我的方法有什么错误?

回答

相关问题