[解決済み] pandasのgroupbyを使ってユニークな値を数える
2023-06-17 07:27:36
質問
以下のような形式のデータがあります。
df = pd.DataFrame({
'group': [1, 1, 2, 3, 3, 3, 4],
'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
print(df)
# group param
# 0 1 a
# 1 1 a
# 2 2 b
# 3 3 NaN
# 4 3 a
# 5 3 a
# 6 4 NaN
グループ内の非NULL値は常に同じである。私は各グループの非NULL値(それが存在する場合)を一度カウントし、その後、各値の合計カウントを見つけたいのです。
私は現在、以下のような(不格好で非効率的な)方法でこれを行なっています。
param = []
for _, group in df[df.param.notnull()].groupby('group'):
param.append(group.param.unique()[0])
print(pd.DataFrame({'param': param}).param.value_counts())
# a 2
# b 1
ループを使わずにもっときれいにできる方法があると思うのですが、どうしてもうまくいきません。どんな助けでも大いに感謝されるでしょう。
どのように解決するのですか?
私はあなたが使用することができると思います
SeriesGroupBy.nunique
:
print (df.groupby('param')['group'].nunique())
param
a 2
b 1
Name: group, dtype: int64
もう一つの解決策は
unique
を使用し、次に新しい
df
によって
DataFrame.from_records
にシェイプします。
Series
で
stack
そして最後に
value_counts
:
a = df[df.param.notnull()].groupby('group')['param'].unique()
print (pd.DataFrame.from_records(a.values.tolist()).stack().value_counts())
a 2
b 1
dtype: int64
関連
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] pandas GroupByを使ってグループごとの統計情報(カウント、平均値など)を取得する?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?