聚合Pandas Dataframe,以便列只有一个值,但其其他列值相加

时间:2014-04-03 12:19:37

标签: python pandas dataframe

我有一个Pandas Dataframe:

fruits = ['apple', 'apple', 'banana', 'banana', 'orange']
quantities = [10, 5, 20, 12, 25]
products = pd.DataFrame({'Fruits': fruits, 'Amount': quantities})

我想要做的是汇总'Fruits'列,以便唯一的条目是

'apple', 'banana', and 'orange'

但他们的数量'加起来,即

'apple'=15, 'banana'=32, and 'orange'=25. 

这将是新的数据帧。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用Groupby:

In [4]: products
Out[4]: 
   Amount  Fruits
0      10   apple
1       5   apple
2      20  banana
3      12  banana
4      25  orange

[5 rows x 2 columns]

In [5]: products.groupby('Fruits').sum()
Out[5]: 
        Amount
Fruits        
apple       15
banana      32
orange      25

[3 rows x 1 columns]

答案 1 :(得分:1)

您应该考虑按如下方式制作字典:

my_dict = {}
for i,item in enumerate(fruits):
    if item in my_dict:
        my_dict[item] += quantities[i]
    else:
        my_dict[item] = quantities[i]

然后你就可以做到:

products = pd.DataFrame({'Fruits': my_dict.keys(), 'Amount': my_dict.values()})

我希望有所帮助。