Python 2.7 基于列数据帧中的真值筛选行
我正在使用熊猫数据帧。我感兴趣的是根据应用于已存在datafame的列的条件获得新的数据帧。以下是数据帧:Python 2.7 基于列数据帧中的真值筛选行,python-2.7,dataframe,pandas,filtering,Python 2.7,Dataframe,Pandas,Filtering,我正在使用熊猫数据帧。我感兴趣的是根据应用于已存在datafame的列的条件获得新的数据帧。以下是数据帧: 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 valu
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)
但我得到的答案和上面的代码块完全一样。这意味着它不会过滤任何东西。我正在做一些在早期版本中兼容但现在不兼容的事情吗?如果不是,我犯了什么错误
我还在另一个列中尝试了类似的方法,该列是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)
fol_cnt_users_df=users_df[users_df['followers_count']>1000]
在[35]中:以下用户
出[35]:
索引:724条,2013-06-20,12:13:46至2013-06-19,18:26:48
数据列(共9列):
屏幕名称724非空值
用户描述724非空值
lang 724非空值
follower\u计数724个非空值
friends\u计数722个非空值
列出了714个非空值
状态\u计数724个非空值
stem_key_标志724非空值
stem_键724非空值
数据类型:bool(1)、float64(3)、int64(1)、object(4)
提前感谢您的帮助。您的问题可能是版本问题(我假设您使用的是
0.10
或0.11
)。我已经测试了您的代码,如果stem\u key\u flag
列包含任何False
值,那么它应该返回不同的数据帧。但是,由于此线程已变得相当流行,为了未来的访问者,我想声明您的筛选行(如下所示)是正确的:
en_users_df=users_df[users_df['stem_key_flag']==True]
尽管如此,您还是可以使用一个简单的行(如
en\u users\u df=users\u df[users\u df.stem\u key\u flag]
向我们显示users\u df.count()
和en\u users\u df.count()
的输出。如果它们相等(即,您没有过滤任何内容),那么我强烈怀疑每一行的lang是'en'
。如果没有,请显示一个反例行。dan,我对问题进行了一点编辑。现在我想看看类型为bool的字段,而不是lang。好的,现在您考虑的是一个不同的列,但我有一个相同的问题:stem\u key\u flag
的所有条目是否都是True
?你能举个反例吗?pandas肯定仍然支持这种用法。“在[44]:users_df['stem_key_flag']dt_time 2013-06-20,12:13:46 False 2013-06-20,14:41:23 True”此外,我还找到了解决方案。如果我使用==1,它就可以工作,而不是True。谢谢你的谈话。我很感激
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)