根据列中的True值过滤行 - python pandas dataframe

时间:2013-07-02 18:12:09

标签: python-2.7 dataframe pandas filtering

我正在使用pandas数据帧。我感兴趣的是基于应用于已存在的数据帧的列的条件来获得新的数据帧。这是数据框:

users_df
Out[30]: 
<class 'pandas.core.frame.DataFrame'>
Index: 3595 entries,
Data columns (total 9 columns):
screen_name        3595  non-null values

User_Desc          3595  non-null values

lang               3595  non-null values
followers_count    3579  non-null values
friends_count      3580  non-null values
listed_count       2665  non-null values
statuses_count     3595  non-null values
stem_key_flag      3595  non-null values
stem_keys          3595  non-null values
dtypes: bool(1), float64(3), int64(1), object(4)

我正在做的是

en_users_df = users_df[users_df['stem_key_flag']==True]

但我得到的答案与顶级代码块相同。这意味着它不会过滤任何东西。我做的是早期版本兼容但现在不兼容的东西吗?如果没有,我犯的是什么错误?

我也尝试了另一个类的方法,这是一个int数据类型,它工作正常。

fol_cnt_users_df = users_df[users_df['followers_count'] >1000]

In [35]: fol_cnt_users_df
Out[35]: 
<class 'pandas.core.frame.DataFrame'>
Index: 724 entries, 2013-06-20, 12:13:46 to 2013-06-19, 18:26:48
Data columns (total 9 columns):
screen_name        724  non-null values
User_Desc          724  non-null values
lang               724  non-null values
followers_count    724  non-null values
friends_count      722  non-null values
listed_count       714  non-null values
statuses_count     724  non-null values
stem_key_flag      724  non-null values
stem_keys          724  non-null values
dtypes: bool(1), float64(3), int64(1), object(4)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题可能是版本问题(我假设您使用的是0.100.11)。我已经测试了您的代码,并且如果stem_key_flag列包含任何False值,那么它应该返回不同的数据帧。但是,由于该线程已逐渐流行,为了将来的访问者,我想指出您的过滤行(如下所示)是正确的:

en_users_df = users_df[users_df['stem_key_flag']==True]

尽管如此,您将可以使用诸如

这样的简单代码来获得相同的结果
en_users_df = users_df[users_df.stem_key_flag]