[英]Check if Pandas Groupby is empty
我有一个用例,我在其中过滤作为参数提供的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")
我知道我可以在 grouped-dataframed 上使用recent_index
,但我想检查是否有更好的方法来处理这个问题
查询.ngroups
属性,>= 1 行至少应存在 1 个组:
if not filter_df.ngroups:
# no row key present
有关ngroups
的更多信息,请参阅我的这篇文章。
上面的答案假设您无法提前知道创建 groupBy object,但如果可以,最好在条件步骤中检查,然后您可以检查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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.