別の列でグループ化された要素からリストのリストを返します

エレノア

質問の説明方法がわからないので、ここで例を示します。

A B
1 3
1 4
2 5
2 8
2 6
3 6
3 8
4 10
4 1

データフレームには2つの列AとBがあります。このようなリストを返すようにします。

[[3,4],[5,8,6],[6,8],[10,1]]

ご覧のとおり、これはグループ化されABに数値のリストを返します。注意すべき点として、要素の順序は変更されBません。また、サブリストの順序は列Aに示されているものと同じです([3,4]グループ1[5,8,6]から、グループ2からなど)。

データフレームがすでにAによって順序付けられているとします。forループを使用してそれを行う方法は知っていますが、私のデータセットには10​​億のレコードがあります。だから私はこの問題のためのいくつかの効率的でクリーンなコードを探しています。

アレクサンダー

最初に最初の列Aグループ化し、次にで一意の値を取得する必要がありますB(一意の値のみが必要であり、重複は必要ないと仮定します)。それが終わったら、ラムダ式を使用して各np.array値をリストに変換し、結果のシリーズをを使用してリストに変換し.tolist()ます。

>>> df.groupby('A', sort=False)['B'].apply(list).tolist()

または、

>>> [list(v) for v in df.groupby('A', sort=False)['B'].unique()]

または、

>>> df.groupby('A', sort=False)['B'].apply(lambda x: x.unique().tolist()).tolist()

[[3, 4], [5, 8, 6], [6, 8], [10, 1]]

また、groupby操作をソートしないことをお勧めします。

興味のある方のために、タイミングを比較します。

df_ = pd.concat([df] * 10000)  # Set-up larger dataframe with 90k rows.

%timeit df_.groupby('A', sort=False)['B'].unique().apply(list).tolist()
# 100 loops, best of 3: 5.9 ms per loop

%timeit df_.groupby('A', sort=False)['B'].apply(list).tolist()
# 100 loops, best of 3: 6.79 ms per loop

%timeit list(map(list, df_.groupby('A', sort=False)['B'].apply(list)))
# 100 loops, best of 3: 8.02 ms per loop

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonのリストのリストからグループ化された棒グラフを作成します

分類Dev

リストのリスト内の要素をネストされた辞書にグループ化します

分類Dev

別の列でグループ化されたパンダ列のリストから頻出要素を見つける

分類Dev

LINQを使用して、別のプロパティでグループ化されたリストから最大値を除くすべてを削除します

分類Dev

SQLクエリからネストされた配列をPHPでグループ化して、jqTreeプラグインのJSONを取得します

分類Dev

各要素を長さでグループ化して、1次元リストからリストのリストを作成します

分類Dev

日付でグループ化されたリストのQuerySetを返します

分類Dev

リストのグループ化された要素をPythonの単一要素で1つのリストに結合します

分類Dev

dictのリストを受け入れ、複数のキーでグループ化されたリストのdictを返します

分類Dev

標準ライブラリのみを使用して、別の列のグループ化された値から1つの列の累積合計でテキストファイルを並べ替えますか?

分類Dev

ネストされたリストの要素でリストをグループ化する

分類Dev

pandas DataFrameを列でグループ化し、列のグループからリストを作成します

分類Dev

forループで返された要素から新しいリストを追加します

分類Dev

Python-ポイントのリストを使用して、forループなしでグリッド化されたNetCDFからデータを抽出します

分類Dev

日付ごとのネストされたリストで要素を時間ごとにグループ化しますか?

分類Dev

C#のリストからHashSetとDictionaryを取得し、ネストされたプロパティでグループ化します

分類Dev

Rの別の列に基づいて列から抽出された文字列テキストをグループ化する列を作成します

分類Dev

Javaでループのために使用して別のリストから要素を転送します

分類Dev

大きなnumpy配列を、グループ化されたインデックスのリストを使用して個別の配列に分割します

分類Dev

タプルのリストを別のソートされた列挙リストで並べ替えます

分類Dev

別のリストで示されているリストから特定の要素をプロットしたい

分類Dev

多次元配列phpからグループ化されたコンマ区切りリストを生成します

分類Dev

ネストされたリストから特定の名前のすべての要素をプルします

分類Dev

タプルのリストを最初の要素でグループ化します

分類Dev

グループ化された行のリストを更新します。

分類Dev

グループ化されたリストからタプルキーのみをフィルタリングします

分類Dev

Pythonは、一意の値からグループ化されたリストのリストを作成します

分類Dev

リストを繰り返し処理し、ネストされたタグからテキスト内のタグをスクレイプで削除します

分類Dev

日付とタグでグループ化された行のリスト要素の頻度をカウントします

Related 関連記事

  1. 1

    Pythonのリストのリストからグループ化された棒グラフを作成します

  2. 2

    リストのリスト内の要素をネストされた辞書にグループ化します

  3. 3

    別の列でグループ化されたパンダ列のリストから頻出要素を見つける

  4. 4

    LINQを使用して、別のプロパティでグループ化されたリストから最大値を除くすべてを削除します

  5. 5

    SQLクエリからネストされた配列をPHPでグループ化して、jqTreeプラグインのJSONを取得します

  6. 6

    各要素を長さでグループ化して、1次元リストからリストのリストを作成します

  7. 7

    日付でグループ化されたリストのQuerySetを返します

  8. 8

    リストのグループ化された要素をPythonの単一要素で1つのリストに結合します

  9. 9

    dictのリストを受け入れ、複数のキーでグループ化されたリストのdictを返します

  10. 10

    標準ライブラリのみを使用して、別の列のグループ化された値から1つの列の累積合計でテキストファイルを並べ替えますか?

  11. 11

    ネストされたリストの要素でリストをグループ化する

  12. 12

    pandas DataFrameを列でグループ化し、列のグループからリストを作成します

  13. 13

    forループで返された要素から新しいリストを追加します

  14. 14

    Python-ポイントのリストを使用して、forループなしでグリッド化されたNetCDFからデータを抽出します

  15. 15

    日付ごとのネストされたリストで要素を時間ごとにグループ化しますか?

  16. 16

    C#のリストからHashSetとDictionaryを取得し、ネストされたプロパティでグループ化します

  17. 17

    Rの別の列に基づいて列から抽出された文字列テキストをグループ化する列を作成します

  18. 18

    Javaでループのために使用して別のリストから要素を転送します

  19. 19

    大きなnumpy配列を、グループ化されたインデックスのリストを使用して個別の配列に分割します

  20. 20

    タプルのリストを別のソートされた列挙リストで並べ替えます

  21. 21

    別のリストで示されているリストから特定の要素をプロットしたい

  22. 22

    多次元配列phpからグループ化されたコンマ区切りリストを生成します

  23. 23

    ネストされたリストから特定の名前のすべての要素をプルします

  24. 24

    タプルのリストを最初の要素でグループ化します

  25. 25

    グループ化された行のリストを更新します。

  26. 26

    グループ化されたリストからタプルキーのみをフィルタリングします

  27. 27

    Pythonは、一意の値からグループ化されたリストのリストを作成します

  28. 28

    リストを繰り返し処理し、ネストされたタグからテキスト内のタグをスクレイプで削除します

  29. 29

    日付とタグでグループ化された行のリスト要素の頻度をカウントします

ホットタグ

アーカイブ