pandasデータフレームでgroupbyを実行して、各場所と各日付にいくつの行があるかを確認しました。
agg_count = df.groupby(['date', 'location']).count()
ここで、特定の条件を満たすこの新しいデータフレームの行を確認します。たとえば、カウントが50を超えています。これらの行を取得するために、この巨大なデータフレームを効率的に反復処理するにはどうすればよいですか?
このデータから始める
In [275]: df = pd.DataFrame({'date': [20130101, 20130101, 20130102], 'location': ['a', 'a', 'c']})
In [276]: df
Out[276]:
date location
0 20130101 a
1 20130101 a
2 20130102 c
これにより、カウントが1より大きい列が選択されます
In [277]: df.groupby(['date', 'location']).apply(lambda sdf: sdf if len(sdf) > 1 else None)
Out[277]:
date location
date location
20130101 a 0 20130101 a
1 20130101 a
マルチインデックスを下にドロップ
In [278]: df.groupby(['date', 'location']).apply(lambda sdf: sdf if len(sdf) > 1 else None).reset_index(drop=True)
Out[278]:
date location
0 20130101 a
1 20130101 a