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倍 这要快一点,但代码要干净得多。谢谢