检查Pandas Groupby是否为空

2024-06-17 08:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用例,在这个用例中,我对作为参数提供的row_key进行过滤

我知道用于检查DataFrame的标准empty属性,但是无法为DataFrameGroupBy找到类似的属性

下面是演示用例的代码片段,提供的数据是虚拟的-

import pandas as pd
from io import StringIO

df = pd.read_csv(StringIO("""
Name,Value,row_key,row_label
XYZ,100,abc,"Label - 2"
ASD,100,abc,"Label - 2"
GHJ,1000,abc,"Label - 2"
KLI,100,abc,"Label - 2"
BHY,1009,bnm,"Label - 2"
TGB,1409,bnm,"Label - 2"
YUJ,1509,bnm,"Label - 2"
KUT,1609,bnm,"Label - 2"
"""))

invalid_row_key = 'fgh'

filter_df = df[df['row_key'] == invalid_row_key].groupby('row_label')

#### I want something similar to below if case , to handle if the filter_df is empty
if filter_df.empty:
   print("No Row Key Present")

我知道我可以在分组的dataframed上使用recent_index,但是我想检查是否有更好的方法来处理这个问题


Tags: keyimportdfif属性filter用例label
2条回答

查询.ngroups属性,对于>;=1行:

if not filter_df.ngroups:
    # no row key present

有关ngroups的更多信息,请参见this post by me


上面的答案假设您无法在创建groupBy对象之前进行判断,但如果可以,最好在条件步骤进行检查,然后您可以检查DataFrame.empty属性,这更直观:

filter_df = df[df['row_key'] == invalid_row_key]
if filter_df.empty:
    # no rows present
else:
    filter_df.groupby('row_label').doSomethingElse()

处理这一问题的最佳方法是在分组条件之前过滤dataframe,如其他答案所述

然而,我自己尝试了以下解决方案


if filter_df.size().empty:
   print("Empty DataFrame")
 

相关问题 更多 >