我有一个使用部分字符串匹配指定列的方法。我现在通过使用for循环扩展了这个方法,以用于字符串列表,如下例所示:
多年筹资框架:
mytestdata Colourtoassign
0 blah Orange blah FALSE
1 blah blah Red FALSE
其中colortoassign是一列,要使用list colorlist在for循环中的部分字符串匹配上赋值:
[“黑色”, “蓝色”, “绿色”, “橙色”, “粉色”, “紫色”, “红色”, “白色”, “黄色”, '桃红色']
我把它放到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值的向量索引。你知道吗
此数据帧的相关列:
订单2[“变更详情]:
0 NaN
1 NaN
2 [Cable Length (metres):3M (9ft, 10in),Colour:Hot Pink]
3 [Cable Length (metres):2M (6ft, 7in),Colour:Hot Pink]
订单两个['VariationStringLabel\u FULL']:
0 FALSE
1 FALSE
2 FALSE
3 FALSE
虽然我不相信它是索引发生的向量,但我尝试使用ordersTwo['Variation details'].fillna(0,inplace=True)删除ordersTwo['Variation details']的NaN,但结果是一样的。你知道吗
我的代码或方法中有什么错误?你知道吗
你知道吗str.contains系列(pat,case=True,flags=0,na=nan,regex=True)
其中na:默认NaN,为缺少的值填充值。你知道吗
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.contains.html
请尝试以下代码:
相关问题 更多 >
编程相关推荐