68

groupby 関数を使用して、特定の変数をグループごとに合計または平均することに成功しましたが、単一の結果を取得するのではなく、値のリストに集計する方法はありますか? (そして、これはまだ集計と呼ばれますか?)

とにかく、これが私がとるべきアプローチであるかどうかは完全にはわかりません.

つまり、データが次のようになっているとします。

    A    B    C  
    1    10   22
    1    12   20
    1    11   8
    1    10   10
    2    11   13
    2    12   10 
    3    14   0

私が最終的にやろうとしているのは、次のようなものです。groupby をリストに集約してこれを実行できるかどうかは完全にはわかりませんが、ここからどこへ行くべきか迷っています。

仮定の出力:

     A    B    C  New1  New2  New3  New4  New5  New6
    1    10   22  12    20    11    8     10    10
    2    11   13  12    10 
    3    14   0

おそらく、代わりにピボットを追求する必要がありますか?データが列に配置される順序は重要ではありません。この例の列 B から New6 まではすべて同等です。すべての提案/修正は大歓迎です。

4

7 に答える 7

102

私は以下を使用しました

grouped = df.groupby('A')

df = grouped.aggregate(lambda x: tuple(x))

df['grouped'] = df['B'] + df['C']
于 2015-04-07T20:06:14.627 に答える
1

私はまったく同じ問題に苦労してきましたが、答えは、grouby を使用してリストを取得できるということです。私はこれを最もpythonicな方法で行っていると100%確信しているわけではありませんが、その価値があるのはあなたの質問に答えようとする私の試みです. 次のように、bygroup に含まれるデータのリストを作成できます。

import pandas as pd
import numpy as np
from itertools import chain

Data = {'A' : [1, 1, 1, 1, 2, 2, 3], 'B' : [10, 12, 11, 10, 11, 12, 14], 'C' : [22, 20,     8, 10, 13, 10, 0]}
DF = pd.DataFrame(Data)
DFGrouped = DF.groupby('A')

OutputLists = []

for group in DFGrouped:
    AList = list(group[1].A)
    BList = list(group[1].B)
    CList = list(group[1].C)
    print list(group[1].A)
    print list(group[1].B)
    print list(group[1].C)
    ZIP =  zip(BList, CList)
    print ZIP
    OutputLists.append(list(chain(*ZIP)))

OutputLists

これは、あなたが望むと思う方法で、リストのリストにデータを出力します。その後、データフレームにすることができます。上記の印刷ステートメントは、明確に説明するためのものです。私の方法を使用してこれを行う最も効率的な (コードの観点から) 方法は次のとおりです。

import pandas as pd
import numpy as np
from itertools import chain

Data = {'A' : [1, 1, 1, 1, 2, 2, 3], 'B' : [10, 12, 11, 10, 11, 12, 14], 'C' : [22, 20, 8, 10, 13, 10, 0]}
DF = pd.DataFrame(Data)
DFGrouped = DF.groupby('A')
OutputLists = []
for group in DFGrouped:
    ZIPPED = zip(group[1].B, group[1].C)
    OutputLists.append(list(chain(*ZIPPED)))
OutputLists

私が知る限り、グループ化されたデータからリストを取得するための鍵は、データ自体がグループ化されたデータの各グループの group[1] に格納されていることを認識することです。

お役に立てれば!

于 2013-10-23T11:25:59.117 に答える