1
におけるデータフレームの列の値でグループ化して辞書を作成します。次のように私は、7列を持つデータフレームを持っているのpython
Bank_Acct Firstname | Bank_Acct Lastname | Bank_AcctNumber | Firstname | Lastname | ID | Date1 | Date2
B1 | Last1 | 123 | ABC | EFG | 12 | Somedate | Somedate
B2 | Last2 | 245 | ABC | EFG | 12 | Somedate | Somedate
B1 | Last1 | 123 | DEF | EFG | 12 | Somedate | Somedate
B3 | Last3 | 356 | ABC | GHI | 13 | Somedate | Somedate
B4 | Last4 | 478 | XYZ | FHJ | 13 | Somedate | Somedate
B5 | Last5 | 599 | XYZ | DFI | 13 | Somedate | Somedate
私は辞書を作成したい:
については{ID1: (Count of Bank_Acct Firstname, Count of distinct Bank_Acct Lastname,
{Bank_AcctNumber1 : ItsCount, Bank_AcctNumber2 : ItsCount},
Count of distinct Firstname, Count of distinct Lastname),
ID2: (...), }
上記の例:以下
{12: (2, 2, {123: 2, 245: 1}, 2, 1), 13 : (3, 3, {356: 1, 478: 1, 599: 1}, 2, 3)}
そのためのコードである。
cols = ['Bank First Name', 'Bank Last Name' 'Bank AcctNumber', 'First Name', 'Last Name']
df1 = df.groupby('ID').apply(lambda x: tuple(x[c].nunique() for c in cols))
d = df1.to_dict()
しかし、上記のコードだけのような出力が得られます。
代わりに内部辞書の個別の銀行acctnumberのカウントを与える{12: (2, 2, 2, 2, 1), 13 : (3, 3, 3, 2, 3)}
。
代わりに必要な辞書を入手するにはどうすればよいですか?ありがとう!!
であなたの列と関数を定義することができます。これをもっと速くする方法はありますか?私は巨大なデータフレームを持っています。 – akrama81