2014-01-06 6 views
4

Вот моя ситуация -Объединить дубликаты на основе столбца?

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 с и val2 как сумма каждого val2 сек

Ожидаемый результат :

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

ответ

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() 
+0

удивительных! благодаря! – ComputerFellow

+1

Вместо 'map' вы можете использовать' df ['fruit']. Str.lower() 'здесь. – DSM

+0

@DSM Вы узнаете что-то новое каждый день! Благодарю. – Justin

Смежные вопросы