1. ホーム
  2. python

[解決済み] pandasのデータフレームで重複した行を数えるには?

2023-02-12 04:32:39

質問

データフレーム内の各行の重複を数えようとしています。例えば、以下のようなpandasのdataframeがあるとします。

df = pd.DataFrame({'one': pd.Series([1., 1, 1]),
                   'two': pd.Series([1., 2., 1])})

こんな感じのdfが出ます。

    one two
0   1   1
1   1   2
2   1   1

私は、最初のステップは、すべての異なるユニークな行を見つけることであると想像しています。

df.drop_duplicates()

これで、以下のようなdfができました。

    one two
0   1   1
1   1   2

さて、上記のdfから各行を取り出し([1 1]と[1 2])、それぞれが最初のdfに何回現れるかを数えたいと思います。私の結果は次のようなものになります。

Row     Count
[1 1]     2
[1 2]     1

この最後のステップはどのように行えばよいのでしょうか?

編集します。

より分かりやすくするために、より大きな例を示します。

df = pd.DataFrame({'one': pd.Series([True, True, True, False]),
                   'two': pd.Series([True, False, False, True]),
                   'three': pd.Series([True, False, False, False])})

が与えてくれる。

    one three   two
0   True    True    True
1   True    False   False
2   True    False   False
3   False   False   True

教えてくれる結果が欲しい。

       Row           Count
[True True True]       1
[True False False]     2
[False False True]     1

どのように解決するのですか?

あなたは groupby を全てのカラムに適用し size を呼び出すと、インデックスが重複した値を示します。

In [28]:
df.groupby(df.columns.tolist(),as_index=False).size()

Out[28]:
one    three  two  
False  False  True     1
True   False  False    2
       True   True     1
dtype: int64