Python Pandas筛选;TypeError:无法将序列转换为<class'int'>

2024-09-30 16:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像这样的数据帧:

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的所有行?在


Tags: thetoidconvertdf错误openclass
1条回答
网友
1楼 · 发布于 2024-09-30 16:28:13

您可以使用DF.Units = DF.Units.map(int)DF.Units = DF.Units.astype(int)。从那里你的过滤器应该起作用。在

仅供参考Difference between map, applymap and apply methods in Pandas ,对applyapplymap、和{}之间的区别作了很好的解释。您可能会注意到,根据方法的定义,applymap在一个序列上是没有意义的。在

相关问题 更多 >