根据列合并重复项?

时间:2014-01-06 18:26:11

标签: python pandas grouping

这是我的情况 -

In[9]: df
Out[9]: 
    fruit  val1  val2
0  Orange     1     1
1  orANGE     2     2
2   apple     3     3
3   APPLE     4     4
4   mango     5     5
5   appLE     6     6

In[10]: type(df)
Out[10]: pandas.core.frame.DataFrame

如何删除不区分大小写的重复项,以使得fruit的结果val1全部低于val1,并将val2val2的总和作为每个{{1}的总和1}}š

预期结果:

  fruit    val1 val2
0 orange    3    3
1 apple     13   13
2 mango     5    5 

1 个答案:

答案 0 :(得分:8)

分两步:

df['fruit'] = df['fruit'].map(lambda x: x.lower())

res = df.groupby('fruit').sum()

res    
#         val1  val2
# fruit             
# apple     13    13
# mango      5     5
# orange     3     3

恢复你的结构:

res.reset_index()

根据评论,下部外壳可以更直接的方式完成,如下所示:

df['fruit'] = df['fruit'].str.lower()