[英]Python Pandas Dataframe filter not working
我有一个名为 df 的 Pandas 数据框,其内容如下:
Symbol Cat Beta Eps MktCap
2350 FBP Foreign Regional Banks 0 0 0
2351 FNBC Foreign Regional Banks 0 0 0
2353 BSBR Foreign Regional Banks 0 0 0
2354 BBD Foreign Regional Banks 0 0 0
2355 HDB Foreign Regional Banks 0 0 0
2356 BCH Foreign Regional Banks 0 0 0
2358 WF Foreign Regional Banks 0 0 None
2359 SMFG Foreign Regional Banks 0 0 None
2360 BFR Foreign Regional Banks 0 0 0
2361 BCA Foreign Regional Banks 0 0 0
2362 BPOP Foreign Regional Banks 0 0 None
2363 CIB Foreign Regional Banks 0 0 0
2364 ITUB Foreign Regional Banks 0 0 0
2365 BMA Foreign Regional Banks 0 0 0
2366 KB Foreign Regional Banks 0 0 None
2367 BBDO Foreign Regional Banks 0 0 0
2368 BSMX Foreign Regional Banks 0 0 None
2369 BBVA Foreign Regional Banks 0 0 None
2370 SHG Foreign Regional Banks 0 0 0
2352 DB Foreign Regional Banks 1.08 0 0
2357 MFG Foreign Regional Banks 6.101694915 0 None
我使用以下 Python 代码:
df2 = df[df.Beta > 0]
生成的 df2 不会过滤掉 Beta 的 0 值,这意味着它保持等于 df。 我该如何解决这个问题? 谢谢
我想你可以尝试强制转换为float
通过astype
-它似乎dtype
柱的Beta
是object
(然后type
显然是string
):
df2 = df[df.Beta.astype(float) > 0]
我有一个看起来像这样的熊猫 df : pandas df 。
我的问题是,当我尝试使用过滤器或条件查找某个状态时,我发现该状态不存在,即使我可以看到它存在。
例如。
state_df.loc[state_df['state'] == 'AK']
导致 df 没有行,这意味着它找不到 AK。
我认为这个问题可能与列的 dtype 有关,但对我来说也很好:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 44 entries, 0 to 43
Data columns (total 6 columns):
state 44 non-null object
high_risk_per_ICU_bed 44 non-null float64
high_risk_per_hospital 44 non-null float64
icu_beds 44 non-null float64
hospitals 44 non-null float64
total_at_risk 44 non-null float64
dtypes: float64(5), object(1)
memory usage: 2.2+ KB
如果有帮助,我通过使用groupby
函数并与sum
聚合来创建列state
,但我认为这不会导致此错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.