Python Pandas Dataframe过滤器无法正常工作

时间:2016-12-02 06:16:39

标签: python pandas dataframe

我有一个名为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。我该如何解决? 感谢

2 个答案:

答案 0 :(得分:1)

我认为您可以astype尝试转换为float - dtype列的Beta似乎是object(然后type是显然是string):

df2 = df[df.Beta.astype(float) > 0]

答案 1 :(得分:0)

我有一个如下所示的 Pandas 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

如果有帮助,我通过使用 state 函数并与 groupby 聚合来创建列 sum,但我认为这不会导致此错误。