Как объединить значения из одного ser ie в другой - PullRequest
2 голосов
/ 27 мая 2020

У меня две серии, первая -

Date     Item
2012  Cheeseburger
      Pasta
      Rice
2013  Tomatoes
      Salad
      Cheese 

И вторая:

Name  Cheese  Milk  Pasta  Juice  Rice  Cake  Tomatoes  Fries  Beef  Salad   Cheeseburger
2012    2      1     1.5     1    0.5    3      2.2      1.4    5      2       4.5
2013    1.7   0.9    1.7     1    0.75   3      2.2      1.3   5.3    1.9       4

Я хочу создать третий столбец в первом ser ie чтобы поместить значения, присутствующие во втором, которые подходят с той же датой и тем же именем. Я действительно не знаю, как это сделать. Я пробовал использовать метод стека, но безуспешно.

Окончательный результат должен выглядеть примерно так:

Date     Item
2012  Cheeseburger  4.5
      Pasta         1.5
      Rice          0.5
2013  Tomatoes      2.2
      Salad         1.9
      Cheese        1.7

Кто-нибудь знает, как это сделать? Спасибо

Вот код, который генерирует второй фрейм данных

df_two = pd.DataFrame({
     "2012": [2, 1, 1.5, 1, 0.5, 3, 2.2, 1.4, 5, 2, 4.5],
     "2013": [1.7, 0.9, 1.7, 1, 0.75, 3, 2.2, 1.3, 5.3, 1.9, 4]
})

df_two.columns = [
     "Cheese", "Milk", "Pasta", "Juice", "Rice",
     "Cake", "Tomatoes", "Fries", "Beef", "Salad", "Cheeseburger"]

1 Ответ

2 голосов
/ 27 мая 2020

Возьмите первый кадр данных как df.

df.reset_index(inplace=True)

Возьмите второй кадр данных как df1 и pd.melt, чтобы свернуть столбцы в строки и получить df2

df2=pd.melt(df1,id_vars=['Name'], value_vars=['Cheese', 'Milk', 'Pasta', 'Juice', 'Rice', 'Cake', 'Tomatoes',
       'Fries', 'Beef', 'Salad', 'Cheeseburger'],var_name='Item')
df2.columns=['Date','Item','value']#Rename columns

Слияние слева df1 на df2

pd.merge(df,df2, how='left', on=['Date', 'Item']).set_index(['Date','Item'])

enter image description here

...