簡體   English   中英

索引時類型比較無效

[英]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']==Truedf['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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM