![](/img/trans.png)
[英]Pandas Assign column by partial string match size to array dimension error
[英]Pandas set column on partial string match using for loop: Error indexing with vector containing NaN
我有一種使用部分字符串匹配分配列的方法。 現在,按照本示例,通過使用for循環,已將此方法擴展為與字符串列表一起使用:
是myDF:
mytestdata Colourtoassign
0 blah Orange blah FALSE
1 blah blah Red FALSE
其中Colourtoassign是要使用列表colourList在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值的向量建立索引 。
此數據框的相關列:
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
盡管我不認為它是發生索引的向量,但我嘗試使用ordersTwo ['Variation details']。fillna(0,inplace = True)刪除orderTwo ['Variation details']的NaN 。但結果是相同。
我的代碼或方法有什么錯誤?
Series.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
試試下面的代碼:
for i in range(len(cableList)-1):
ordersTwo.loc[ordersTwo['Variation details'].str.contains(cableList[i], na=False), 'VariationStringLabel_FULL'] = cableList[i]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.