【发布时间】:2018-01-05 20:10:59
【问题描述】:
我有一个如下所示的 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_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'
因此,由于我选择了单位列中的所有值,因此我得到了一个无法转换的系列。但是为什么我在尝试这个的时候也会这样呢?
DF[(DF.Instrument=='WTICO_USD')&(int(DF['Units'])>-1)]
无法将系列转换为“int”类
如何过滤所有Instrument == WTICO_USD 并具有Units < 0 的行?
【问题讨论】:
-
不,这些是作为单独的命令输入的,因此,第一个不应影响第二个。
标签: python python-3.x pandas dataframe