当前位置: 首页 > 知识库问答 >
问题:

Pandas Dataframe:使用count函数过滤数据

羊舌庆
2023-03-14

我有一个pandas数据框架,我想通过应用一个基于count函数的过滤器来创建一个新的数据框架,这样只应该选择那些计数等于指定数字的列。

例如,在下面的数据帧中:

month_end   Col A       Col B       Col C       Col D
200703      NaN          NaN         NaN         NaN
200704      0.084       0.152       0.142      0.0766
200705      0.124       0.123       0.020       NaN 
200706      NaN         0.191       0.091       0.149   
200707      -0.136      0.047       0.135      -0.127

如果my_variable=4,那么df1应该只包含Col B和Col D以及索引month_end。

我该怎么做?

共有2个答案

臧欣怿
2023-03-14

您可以按照以下思路做一些事情:

df.loc[:,df.notna().sum(0).eq(4)]

    ColB   ColC
0    NaN    NaN
1  0.152  0.142
2  0.123  0.020
3  0.191  0.091
4  0.047  0.135

或者还有count,它已经在计数之前丢弃了dupes:

df.loc[:,df.count().eq(4)]

如果您希望包含日期列,而它不是索引:

ix = df.notna().sum(0).eq(4)
df.loc[:,ix.index[ix].union(['month_end'])]

    ColB   ColC  month_end
0    NaN    NaN     200703
1  0.152  0.142     200704
2  0.123  0.020     200705
3  0.191  0.091     200706
4  0.047  0.135     200707
郎玮
2023-03-14

使用for循环的解决方案:

for col in df.columns:
    if (df[col].count() != 4):
        df.drop(col, axis=1)
 类似资料:
  • 本文向大家介绍Python过滤函数filter()使用自定义函数过滤序列实例,包括了Python过滤函数filter()使用自定义函数过滤序列实例的使用技巧和注意事项,需要的朋友参考一下 filter函数: filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。 filter()函

  • 问题内容: 是否可以对结果进行分组,然后按组中的行数进行过滤? 像这样: 问题答案: 您想使用HAVING来过滤聚合函数。

  • 问题内容: 首先,这是分配的一部分。 我正在尝试使用COUNT函数作为与Northwind数据库有关的查询的一部分。查询应返回CustomerID,CompanyName和 为每个相应的客户下的订单数 。 当然,前两部分很简单,但是我无法让COUNT函数正常工作。到目前为止,我的查询是: 以这种方式使用COUNT的正确语法是什么?它看起来像: 到目前为止,所有示例都单独使用了COUNT函数,而不是

  • 在MariaDB数据库中,函数用于返回表达式的计数/行数。 语法: 注:函数只计算值。 示例: 假设有一个表,有以下数据: 从表中统计: 执行上面查询语句,得到以下结果 - 1. COUNT()函数与单一表达式 统计是或的学生人数。参考以下查询语句 - 执行上面查询语句,得到以下结果 - 2. COUNT()函数与Distinct子句 子句与函数一起使用以防止重复计数。它只包含原始记录。 执行上面

  • 主要内容:count函数的示例在Spark中,函数返回数据集中存在的元素数。 count函数的示例 在此示例中,计算数据集中存在的元素数量。使用并行化集合创建RDD。 现在,可以使用以下命令读取生成的结果。 应用函数来计算元素数。

  • COUNT() 函数返回匹配指定条件的行数。 SQL COUNT(column_name) 语法 COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):SELECT COUNT(column_name) FROM table_name; SQL COUNT(*) 语法 COUNT(*) 函数返回表中的记录数:SELECT COUNT(*) FROM table_nam

  • 本文向大家介绍Angularjs中如何使用filterFilter函数过滤,包括了Angularjs中如何使用filterFilter函数过滤的使用技巧和注意事项,需要的朋友参考一下 AngularJS的filter,中文名“过滤器”是用来过滤变量的值,或者格式化输出,得到自己所期望的结果或格式的东东。AngularJS中有一个filterFilter函数用来对集合过滤,非常方便。 源代码大致如下

  • 我有以下数据: 现在我想以这样一种方式过滤数据,我可以删除第6行和第7行,对于特定的uid,我想在代码中只保留一行值为'c' 所以预期的数据应该是: 我使用的窗口函数如下所示: