【发布时间】:2019-12-08 20:05:49
【问题描述】:
我正在使用熊猫数据框。我有兴趣根据应用于现有数据名列的条件获取新数据框。这是数据框:
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)
提前感谢您的帮助。
【问题讨论】:
-
向我们展示
users_df.count()和en_users_df.count()的输出。如果它们相等(即,您没有过滤任何内容),那么我强烈怀疑每一行的 lang 是'en'。如果不是,请给出一个反例行。 -
dan,我稍微编辑了这个问题。而不是字段是 lang,现在我想查看类型为 bool 的字段。
-
好的,现在您正在考虑不同的列,但我有同样的问题:您确定不是
stem_key_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,它会起作用。但是谢谢你的谈话。我很感激
标签: python-2.7 dataframe pandas filtering