グループ化されたデータフレームの列にあるアイテムのペアの数を数えます。(パンダ)

Sherlock_Hound

1列のアイテムのペアの数を数えたいのですが。私はそれに対する解決策を作りましたが、もっと簡潔な解決策があるかどうか知りたいです。

これが例と私のアプローチです。私はこのようなDataFrameを持っています。

df = pd.DataFrame({'id':[1,1,2,2], 'item':['apple','orange','orange','apple']})

最後に、どの商品が最も一緒に購入されているのか知りたいです。したがって、この場合、オレンジとリンゴが最も一緒に購入されるという結果を得たいと思います。

次に、id列の値に基づいてグループ化を行いました

id_group = df.groupby('id')

次に、item内のアイテムのペアの数を数えるために、次のような関数を作成し、のitem列に適用しましたid_groupこの後、を使用してタプルのリストを結合しましたsum()最後に、Counter()同じアイテムを含むペアの数を数えていました。combos()、私はsorted()カウントを避け('apple','orange')('orange','apple')別々に使用ていました。

2ペア('apple','orange')または2ペアがあることを示す結果を得るためのより良いアプローチはあります('orange','apple')

import itertools 
from collections import Counter
def combos(x):
     combinations = []
     num = x.size
     while num != 1:
          combinations += list(itertools.combinations(x,num))
          num -= 1
     element_sorted = map(sorted,combinations)
     return list(map(tuple,element_sorted))

k= id_group['item'].apply(lambda x:combos(x)).sum()
Counter(k)
ジェズリール

ペア、トリプルのall_subsets場合に変更0加え関数を使用します2...ソリューションのように:

#https://stackoverflow.com/a/5898031
from itertools import chain, combinations
def all_subsets(ss):
    return chain(*map(lambda x: combinations(ss, x), range(2, len(ss)+1)))

そして、値をフラット化するためにsum、リストを連結するために使用ない方がよいと思います。見た目は派手ですが、2次式であり、悪い習慣と見なす必要があります。

したがって、ここではリスト内包表記でソートされたタプルを使用したフラット化を使用します。

k = [tuple(sorted(z)) for y in id_group['item'].apply(all_subsets) for z in y]

print (Counter(k))
Counter({('apple', 'orange'): 2})

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パンダはユーザー定義関数を複数の列のグループ化されたデータフレームに適用します

分類Dev

複数の列でグループ化されたパンダデータフレームからネストされたJSONを取得します

分類Dev

複数のアイテムをパンダデータフレームの値にマップします

分類Dev

グループ化されたパンダのデータフレームを列挙する

分類Dev

パンダのデータフレーム:列ごとにグループ化し、この列の複製を複数の行にまたがらせます

分類Dev

パンダのある列にグループ化してデータフレームを要約します

分類Dev

グループ化されたpysparkデータフレームに複数の列を作成する

分類Dev

別の列のグループ化された値の合計によってパンダデータフレームの列を正規化する

分類Dev

別の列からパンダのデータフレーム列で一致するアイテムの数を数える方法は?

分類Dev

日時を含むグループ化されたパンダデータフレームを単一のタイムラインにプロットする

分類Dev

グループ化されたパンダデータフレームに独自の関数を正しく適用する

分類Dev

可変個引数テンプレートからランダムに取得された互換性のあるタイプのペアリング

分類Dev

発生数でpythonpandasデータフレームのアイテムをグループ化します

分類Dev

データフレーム内のユーザー(複数の行にわたって繰り返される)とアイテムをラベルの2値化されたデータフレームに変換します

分類Dev

スクレイピングされたアイテムをループして、辞書またはパンダのデータフレームに追加するにはどうすればよいですか?

分類Dev

パンダデータフレームのグループ化された列の1つの列の違いのグラフをプロットします

分類Dev

グループ化されたセットに関数を適用し、列を既存のデータフレームにバインドする方法

分類Dev

グループ化されたパンダデータフレームに2つのシフトされた列を作成する

分類Dev

パンダは、グループ化されたデータフレームから列のサブセットを並べ替えます

分類Dev

グループ化されたパンダのデータフレームにタイトルを追加するにはどうすればよいですか?

分類Dev

パンダのデータフレームの複数の列によるグループ化と合計

分類Dev

グループ化されたデータフレームをdplyrの独自の関数に渡します

分類Dev

パンダ-データフレーム内の複数のアイテムをループしてSQLクエリに変換する

分類Dev

Daskのグループ化されたデータフレームに関数を適用する:グループ化されたデータフレームを関数の引数としてどのように指定しますか?

分類Dev

パンダ:グループ化されたデータフレームで1日の頻度の倍数である日付を選択しますか?

分類Dev

データフレームを反復処理し、Pandas GroupBy.nuniqueを使用して列をグループ化し、グループ化されたデータフレーム列を複数の.xlsxファイルにエクスポートします

分類Dev

データフレーム値を指定された数のグループに分割し、関数を適用します-パンダ

分類Dev

パンダのグループ化されたデータの単一の列に関数を適用する

分類Dev

注文したカテゴリのアイテム数でパンダのデータフレームをフィルタリングする方法はありますか?

Related 関連記事

  1. 1

    パンダはユーザー定義関数を複数の列のグループ化されたデータフレームに適用します

  2. 2

    複数の列でグループ化されたパンダデータフレームからネストされたJSONを取得します

  3. 3

    複数のアイテムをパンダデータフレームの値にマップします

  4. 4

    グループ化されたパンダのデータフレームを列挙する

  5. 5

    パンダのデータフレーム:列ごとにグループ化し、この列の複製を複数の行にまたがらせます

  6. 6

    パンダのある列にグループ化してデータフレームを要約します

  7. 7

    グループ化されたpysparkデータフレームに複数の列を作成する

  8. 8

    別の列のグループ化された値の合計によってパンダデータフレームの列を正規化する

  9. 9

    別の列からパンダのデータフレーム列で一致するアイテムの数を数える方法は?

  10. 10

    日時を含むグループ化されたパンダデータフレームを単一のタイムラインにプロットする

  11. 11

    グループ化されたパンダデータフレームに独自の関数を正しく適用する

  12. 12

    可変個引数テンプレートからランダムに取得された互換性のあるタイプのペアリング

  13. 13

    発生数でpythonpandasデータフレームのアイテムをグループ化します

  14. 14

    データフレーム内のユーザー(複数の行にわたって繰り返される)とアイテムをラベルの2値化されたデータフレームに変換します

  15. 15

    スクレイピングされたアイテムをループして、辞書またはパンダのデータフレームに追加するにはどうすればよいですか?

  16. 16

    パンダデータフレームのグループ化された列の1つの列の違いのグラフをプロットします

  17. 17

    グループ化されたセットに関数を適用し、列を既存のデータフレームにバインドする方法

  18. 18

    グループ化されたパンダデータフレームに2つのシフトされた列を作成する

  19. 19

    パンダは、グループ化されたデータフレームから列のサブセットを並べ替えます

  20. 20

    グループ化されたパンダのデータフレームにタイトルを追加するにはどうすればよいですか?

  21. 21

    パンダのデータフレームの複数の列によるグループ化と合計

  22. 22

    グループ化されたデータフレームをdplyrの独自の関数に渡します

  23. 23

    パンダ-データフレーム内の複数のアイテムをループしてSQLクエリに変換する

  24. 24

    Daskのグループ化されたデータフレームに関数を適用する:グループ化されたデータフレームを関数の引数としてどのように指定しますか?

  25. 25

    パンダ:グループ化されたデータフレームで1日の頻度の倍数である日付を選択しますか?

  26. 26

    データフレームを反復処理し、Pandas GroupBy.nuniqueを使用して列をグループ化し、グループ化されたデータフレーム列を複数の.xlsxファイルにエクスポートします

  27. 27

    データフレーム値を指定された数のグループに分割し、関数を適用します-パンダ

  28. 28

    パンダのグループ化されたデータの単一の列に関数を適用する

  29. 29

    注文したカテゴリのアイテム数でパンダのデータフレームをフィルタリングする方法はありますか?

ホットタグ

アーカイブ