不幸的是,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]