[英]Pandas dataframe groupby make a list or array of a column
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()
给出以下字典
>>> my_dict
{('aa', 'bb'): array([10, 20, 30]), ('aaa', 'bbb'): array([100, 200])}
除了使用apply
之外,还有更快/更有效的方法吗?
使用字典理解:
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])}
您可以使用groupby
和itertuples
:
my_dict = dict(df.groupby(['a','b']).agg(list).itertuples(name=None))
{('aa', 'bb'): [10, 20, 30], ('aaa', 'bbb'): [100, 200]}
或者更简洁地说,正如 Ch3steR 所指出的:
df.groupby(['a','b']).agg(list).to_dict()
{('aa', 'bb'): [10, 20, 30], ('aaa', 'bbb'): [100, 200]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.