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