我有一个像这样的数据帧:
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
如果我写下以下内容,我会得到我期望的结果:
^{pr2}$同样的:
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: cannot convert the series to class 'int'
所以,我尝试这个,得到另一个错误:
DF.Units.applymap(int)
'Series' object has no attribute 'applymap'
因此,由于我选择了unit列中的所有值,所以得到了一个无法转换的序列。但为什么我尝试这个的时候也会这样呢?在
DF[(DF.Instrument=='WTICO_USD')&(int(DF['Units'])>-1)]
cannot convert the series to class 'int'
如何筛选Instrument == WTICO_USD
且具有Units < 0
的所有行?在
您可以使用
DF.Units = DF.Units.map(int)
或DF.Units = DF.Units.astype(int)
。从那里你的过滤器应该起作用。在仅供参考Difference between map, applymap and apply methods in Pandas ,对}之间的区别作了很好的解释。您可能会注意到,根据方法的定义,
apply
、applymap
、和{applymap
在一个序列上是没有意义的。在相关问题 更多 >
编程相关推荐