[英]Invalid type comparison when indexing
我的數據框中目前有2列設置為:
A B
True Morning
True Morning
False Morning
False Morning
但是希望當column A = False
時B列顯示“下午”
A B
True Morning
True Morning
False Afternoon
False Afternoon
但是,這將返回以下錯誤消息。 有任何想法嗎?
df = mask.ix[mask["A"] == "True" , "B"] = "Afternoon"
Anaconda3\lib\site-packages\pandas\core\ops.py:792: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
result = getattr(x, name)(y)
Traceback (most recent call last):
File "<ipython-input-130-f98341f5041b>", line 1, in <module>
df = mask.ix[mask["A"] == "True" , "B"] = "Afternoon"
File "Anaconda3\lib\site-packages\pandas\core\ops.py", line 855, in wrapper
res = na_op(values, other)
File "Anaconda3\lib\site-packages\pandas\core\ops.py", line 794, in na_op
raise TypeError("invalid type comparison")
TypeError: invalid type comparison
似乎在您的A列中,數據類型為bool
但您正在將其與字符串( "True"
)進行比較。 刪除引號,它應該可以正常工作。 另外,您可能希望切換到.loc
而不是.ix
因為它將很快棄用。
還要注意,當數據類型已經為bool
,您無需執行df['A']==True
或df['A']==False
。 您可以分別使用df['A']
和~df['A']
。
df.loc[~df['A'], 'B'] = 'Afternoon'
df
Out:
A B
0 True Morning
1 True Morning
2 False Afternoon
3 False Afternoon
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.