Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python过滤;TypeError:无法将序列转换为_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python过滤;TypeError:无法将序列转换为

Python过滤;TypeError:无法将序列转换为,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个如下所示的数据框: ID Instrument Units Price Status 165 WTICO_USD -1 60.264 OPEN 169 WTICO_USD -1 60.274 OPEN 173 WTICO_USD 1 54.284 OPEN 185 BCO_USD 1 60.124 OPEN 如果我写下以下内容,我会得到我所期望的: DF[(DF.Instrument=='WTICO_U

我有一个如下所示的数据框:

ID  Instrument  Units   Price   Status
165  WTICO_USD     -1   60.264  OPEN
169  WTICO_USD     -1   60.274  OPEN
173  WTICO_USD      1   54.284  OPEN
185  BCO_USD        1   60.124  OPEN
如果我写下以下内容,我会得到我所期望的:

DF[(DF.Instrument=='WTICO_USD')]
与此相同:

DF[(DF.Instrument=='WTICO_USD')&(DF.ID==165)]
但是,如果我尝试进一步筛选(如本例所示),则不会得到任何行:

DF[(DF.Instrument=='WTICO_USD')&(DF['Units']==-1)]

DF[(DF.Instrument=='WTICO_USD')&(DF.Units=='-1')]
但是,这会产生一个错误:

DF[(DF.Instrument=='WTICO_USD')&(DF['Units']>-1)]
TypeError:无法将序列转换为类“int”

所以,我尝试了这个,得到了另一个错误:

DF.Units.applymap(int)
“Series”对象没有属性“applymap”

因此,由于我选择了unit列中的所有值,所以我得到了一个无法转换的序列。但是为什么我在尝试这个的时候也会这样呢

DF[(DF.Instrument=='WTICO_USD')&(int(DF['Units'])>-1)]
无法将序列转换为类“int”

如何对所有仪表==WTICO_USD且单位小于0的行进行筛选?

您可以使用DF.Units=DF.Units.mapint或DF.Units=DF.Units.astypeint。从那里你的过滤器应该工作


仅供参考,本文对apply、applymap和map之间的差异进行了很好的解释。您可能会注意到,根据方法的定义,applymap在一个系列中是没有意义的。

No,这些是作为单独的命令输入的,因此,第一个命令不应影响第二个命令。您必须将调用astype的输出分配给DF。否则,值将保持不变。