Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用groupby获得两个聚合函数,然后将其转换为list of list_Python_Python 2.7_Pandas - Fatal编程技术网

Python 使用groupby获得两个聚合函数,然后将其转换为list of list

Python 使用groupby获得两个聚合函数,然后将其转换为list of list,python,python-2.7,pandas,Python,Python 2.7,Pandas,我在寻找一个更好的方法来写这个。这对我的示例数据集很好,但在较大的数据集上速度非常慢。从客户购买编号的数据框开始。我想得到一个列表的格式:``[客户,订单平均数,订单数量]` import pandas as pd df = pd.DataFrame(data = [['Customer0', 10], ['Customer0', 12], ['Customer1', 23]], columns=['Customer', 'Orders']) groupe

我在寻找一个更好的方法来写这个。这对我的示例数据集很好,但在较大的数据集上速度非常慢。从客户购买编号的数据框开始。我想得到一个列表的格式:``[客户,订单平均数,订单数量]`

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]]
你能试试这个吗

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

一个小提示:如果组的数量(
len(values)
)相当大,这只能显著改进代码,因为我们不在这里循环。如果你只有少数几个小组,我想最多可以提高2倍

这要快一点,但代码要干净得多。谢谢