Pandas 数据框 groupby 生成列的列表或数组

bur*_*cak 5 python dataframe pandas pandas-groupby

import pandas as pd
import numpy as np

df = {'a': ['aa', 'aa', 'aa', 'aaa', 'aaa'], 
      'b':['bb', 'bb', 'bb', 'bbb', 'bbb'], 
      'c':[10,20,30,100,200]}

df = pd.DataFrame(data=df)

my_dict=df.groupby(['a', 'b'])['c'].apply(np.hstack).to_dict()
Run Code Online (Sandbox Code Playgroud)

给出以下字典

>>> my_dict
{('aa', 'bb'): array([10, 20, 30]), ('aaa', 'bbb'): array([100, 200])}
Run Code Online (Sandbox Code Playgroud)

除了使用之外,还有更快/更有效的方法apply吗?

jez*_*ael 5

使用字典理解:

my_dict= {k:np.hstack(v) for k, v in df.groupby(['a', 'b'])['c']}
print (my_dict)
{('aa', 'bb'): array([10, 20, 30]), ('aaa', 'bbb'): array([100, 200])}
Run Code Online (Sandbox Code Playgroud)