如何从数据框中删除一个字典

时间:2018-10-05 08:10:30

标签: python pandas dictionary dataframe

我有以下数据框:

df.head()

我从每个唯一的 appId 中创建了字典,如下所示:

one dict

使用以下命令:

dfs = dict(tuple(timeseries.groupby('appId')))

此后,我想从数据框中删除所有少于30行的字典。我从字典(dfs)中删除了这些字典,然后尝试了以下代码:

pd.concat([dfs]).drop_duplicates(keep=False)

但它不起作用。

1 个答案:

答案 0 :(得分:1)

我相信您需要transform size,然后按boolean indexing进行过滤:

df = pd.concat([dfs])
df = df[df.groupby('appId')['appId'].transform('size') >= 30]
#alternative 1
#df = df[df.groupby('appId')['appId'].transform('size').ge(30)]
#alternative 2 (slowier in large data)
#df = df.groupby('appId').filter(lambda x: len(x) >= 30)

另一种方法是过滤器dictionary

dfs = {k: v for k, v in dfs.items() if len(v) >= 30}

编辑:

 timeseries = timeseries[timeseries.groupby('appId')['appId'].transform('size') >= 30] 
 dfs = dict(tuple(timeseries.groupby('appId')))