pandas 我在一个panda Dataframe 上使用groupby,我想使用类似于having子句的东西来排除空列表

6jygbczu  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(107)

我有这几行代码

for name in clean.alpha_names:
    CategoryGroupLists=df_new_housing.groupby(name)['SALE PRICE'].apply(list)

当我运行代码时,CategoryGroupLists包含如下所示的内容;

我想删除FIELDSTON和FINANCIAL的空列表条目。我想我需要在GROUPBY后面加上一个HAVING子句,尽管PANDAS没有HAVING子句。那么我该怎么做呢?
编辑:一个建议是我使用一个过滤器。然而,下面的代码我得到了一个错误;

for name in clean.alpha_names:
    CategoryGroupLists=df_new_housing.groupby(name)['SALE PRICE'].filter(lambda x: len(x) > 1).apply(list)

TypeError:“int”对象不可迭代
EDIT 2我现在的解决方法是使用下面的代码。但是我确信有更好的方法来完成它。

# Remove empty lists from the CategoryGroupLists
for idx in (CategoryGroupLists.index):
    if len(CategoryGroupLists[idx]) == 0:
        del CategoryGroupLists[idx]
7ivaypg9

7ivaypg91#

我认为最好的方法是首先过滤掉没有销售额的名字,然后执行groupby。
例如,假设您有以下** Dataframe **:

df = pd.DataFrame({'name':['FLATIRON','FLATIRON','FLATIRON','FLATIRON','FINANCIAL','FIELDSTON'],
                   'SALE PRICE':[489854,576299,6625000,4650000,'','']})

我们现在过滤掉没有数据的名称,然后执行groupby。
第一次

相关问题