Pandas groupby获取两个聚合函数,然后转换为列表列表

时间:2016-08-28 19:15:31

标签: python python-2.7 pandas

我正在寻找一种更好的方法来写这篇文章。这适用于我的示例数据集,但在较大的数据集上相当慢。从dataframe个客户购买数字开始。我希望得到以下格式的列表:``[客户,订单的平均数,订单的数量]`

import pandas as pd

df = pd.DataFrame(data = [['Customer0', 10], ['Customer0', 12], ['Customer1', 23]],
                  columns=['Customer', 'Orders'])

grouped = df.groupby(['Customer']).mean()
grouped['count'] =  df.groupby(['Customer']).count()

values = grouped.values.tolist()
indexes = grouped.index.tolist()

for x in range(0,len(values)):
    values[x].insert(0, indexes[x])

print values

输出:

[['Customer0', 11, 2], ['Customer0', 23, 1]]

1 个答案:

答案 0 :(得分:2)

你可以试试这个吗?

df.groupby('Customer').agg(['mean', 'count']).reset_index().values.tolist()
Out: [['Customer0', 11, 2], ['Customer1', 23, 1]]

小注意事项:如果组(len(values))的数量非常大,这只会显着改善您的代码,因为我们没有在这里循环。如果你只有少数几个团体,我想这个改进最多只有2倍。