繁体   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