Проверка значения в другом df и суммирование значений в другом df

python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Я изо всех сил пытаюсь сделать что-то простое на panda (кстати, я не очень доволен pandas).

У меня есть 2 фрейма данных :

df1

 Thing   2010    2011    2012
Banana  37  40  56
Pear    15  37  55
Carrot  7   4   30
 

И другой

df2

     Fruits  Banana  Pear
    Vegetables  Carrot
 

И я хочу что-то вроде этого :

         2010    2011    2013
Fruits   52      77     111 
Vegetables 7      4      30
 

Что я пытался сделать, так это сначала проверить, находится ли плод из df1 в df2, затем я хотел добавить его в список, чтобы окончательно суммировать значения, но это кажется запутанным…

Я только начал проверять, но он сообщает мне «False»… где, поскольку есть совпадающие значения…

 df1.Thing.isin(df2)
 

Заранее спасибо

Комментарии:

1. df2 на самом деле не похож на фрейм данных

Ответ №1:

Идея состоит в том, чтобы создать словарь по значениям, Fruits,Vegetables а затем объединить sum с Series.map :

 df2 = pd.DataFrame({'a': {'Fruits': 'Banana', 'Vegetables': 'Carrot'}, 
                    'b': {'Fruits': 'Pear', 'Vegetables': np.nan}})
print (df2)
                 a     b
Fruits      Banana  Pear
Vegetables  Carrot   NaN


d = df2.stack().reset_index(name='new').set_index('new')['level_0'].to_dict()
print (d)
{'Banana': 'Fruits', 'Pear': 'Fruits', 'Carrot': 'Vegetables'}

df = df1.groupby(df1['Thing'].map(d)).sum()
print (df)
            2010  2011  2012
Thing                       
Fruits        52    77   111
Vegetables     7     4    30