Как удалить один словарь из фрейма данных - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующий фрейм данных:

df.head()

И я создал словари для каждого уникального appId , как показано ниже:

one dict

с помощью этой команды:

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

После этого я хочу удалить из моего фрейма данных все словари, которые имеют менее 30 строк,Я удалил эти словари из своих словарей (dfs), а затем попробовал этот код:

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

, но он не работает.

1 Ответ

0 голосов
/ 05 октября 2018

Я считаю, что вам нужно 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')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...