Как суммировать итоги, которые относятся к другому фрейму данных - PullRequest
0 голосов
/ 29 ноября 2018

Я хотел бы суммировать всю комбинацию из двух фреймов данных,

DataFrame A

         ColA    ColB   Sales
           1       A      10
           1       B      20
           1       C      100
           2       D      1000
           2       E      2000

DataFrame B
         ColA    ColB   
          1      A,B
          2      E

Мой ожидаемый результат для фрейма данных составляет

        ColA     ColB   TotalSales
         1       A,B     30
         2       E       2000

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете использовать pd.DataFrame.apply для частично векторизованного раствора:

def summer(x):
    m1 = df_a['ColA'].eq(x['ColA'])
    m2 = df_a['ColB'].isin(x['ColB'].split(','))
    return df_a.loc[m1 & m2, 'Sales'].sum()

df_b['TotalSales'] = df_b.apply(summer, axis=1)

print(df_b)

   ColA ColB  TotalSales
0     1  A,B          30
1     2    E        2000
0 голосов
/ 29 ноября 2018

Вы можете попробовать выбрать строки данных A, которые находятся в столбце Colb данных B, и добавить столбец продаж для выбранного

#df
 ColA    ColB   Sales
   1       A      10
   1       B      20
   1       C      100
   2       D      1000
   2       E      2000


df.set_index('ColB',inplace=True)
#df
#       ColA    Sales
# ColB      
# A        1    10
# B        1    20
# C        1    100
# D        2    1000
# E        2    2000

#df1

 #ColA    ColB   
 # 1      A,B
 # 2      E

df1['TotalSales'] = df1.ColB.str.split(',').apply(lambda x: df.loc[x]['Sales'].sum() )

Out:

ColA    ColB    TotalSales
0   1   A,B 30
1   2   E   2000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...