旧版本的Panda, Groupby agg(list)不工作



不幸的是,Python的版本和它的库已经过时了。我被困在一个分组聚合的问题,我希望有人能帮助我。

我有下面的df

Type            Cost
0   Food - Type A   1.50
1   Food - Type B   2.20
2   Car - Type A    1.30
3   Car - Type B    2.40
4   Car - Type C    3.70

我想创建一个类别变量,我最终想把这个df分组在下面。

category = df['Type'].str.split(' -', expand=True)[0]
0 Food
1 Food
2 Car
3 Car
4 Car

然后将其分组,并将每一行变成如下的列表。

dict= df.groupby(category).agg(list)

0        Type                             Cost     
Food    [Food - Type A, Food - Type B]             [1.5, 2.2]
Car     [Car - Type A, Car - Type B, Car - Type C] [1,3, 2.4, 3.7]

现在正常工作了。但是我必须使用的pandas版本是0.16.2。agg(列表)不起作用。也许它还没有被引入,但我对文档不太清楚。

有人能告诉我如何才能重新创建这个吗?

下面是使用pandas的另一种方法。pivot_table,根据文档,这似乎已经可以在Pandas 0.16中实现了:

import pandas as pd
df = pd.DataFrame(
{
"Type": [
"Food - Type A",
"Food - Type B",
"Car - Type A",
"Car - Type B",
"Car - Type C",
],
"Cost": [1.5, 2.2, 1.3, 2.4, 3.7],
}
)
df["Category"] = df["Type"].str.split(" -", expand=True)[0]
df = df.pivot_table(values=["Type", "Cost"], index="Category", aggfunc=list)
Cost                                        Type
Category
Car       [1.3, 2.4, 3.7]  [Car - Type A, Car - Type B, Car - Type C]
Food           [1.5, 2.2]              [Food - Type A, Food - Type B]

最新更新