我有以下熊猫数据框df
:
Id Version Time
110 9016 NaN
110 9016 NaN
110 9016 NaN
110 9016 2019-10-18 14:19:05.180
当我运行此查询时:
df.query('Time.isna()').head()
..我收到此错误:
TypeError:“系列”对象是可变的,因此不能进行散列处理
为什么会发生以及如何解决?可能与pandas和Python的版本有关吗?我使用Pandas'0.25.3'和Python 3。
答案 0 :(得分:2)
在此使用参数engine='python'
,因为传递的熊猫函数isna
无法与numexpr
引擎一起使用。文档中有关pandas.eval
的更多信息:
引擎:字符串或无,默认为“ numexpr”,{“ python”,“ numexpr”}
用于评估表达式的引擎。支持的引擎是
无:尝试使用numexpr,退回到python
'numexpr':此默认引擎使用评估熊猫对象 numexpr用于大框架复杂表达式中的大幅度加速。
'python':就像执行顶部操作一样执行操作 级别的python。该引擎通常没有那么有用。
将来可能会提供更多后端。
df1 = df.query('Time.isna()', engine='python').head()
print (df1)
Id Version Time
0 110 9016 NaN
1 110 9016 NaN
2 110 9016 NaN
或欺骗NaN != NaN
:
df1 = df.query('Time != Time').head()
print (df1)
Id Version Time
0 110 9016 NaN
1 110 9016 NaN
2 110 9016 NaN