使用不同的篩選將dataframe自身連接起來

我有一個(gè)df遵循這個(gè)結(jié)構(gòu):

store       day               type              sales       orders

amazon      2021-10-10        web               10          1
amazon      2021-10-10        retail            500         50
facebook    2021-10-10        retail            300         50
facebook    2021-09-05        retail            10          50
apple       2021-09-01        web               5           1
uber        2021-08-01        web               50          1
uber        2021-08-01        retail            60          1
...

我正在嘗試一個(gè)df_res每周sales & orders次的store, day & type,因此輸出結(jié)果如下所示:

day             type      sales_amazon        orders_amazon       sales_facebook       orders_facebook     sales_apple        orders_apple        sales_uber      orders_uber
2021-08-01      web       0                   0                   0                    0                   0                  0                   50              1     
2021-08-01      rtail     0                   0                   0                    0                   0                  0                   60              1    
2021-10-10      web       10                  1                   0                    0                   0                  0                   0               0      
2021-10-10      retail    500                 50                  300                  50                  0                  0                   0               0 
...   

I tried:

# main df to be joined on
df_res = df[df.store.isin(['amazon'])].groupby(['store','type', pd.Grouper(key = 'day', freq = 'W-MON', 
                                               label = 'right')])[['store','day','orders','sales','type']].sum().reset_index()

# merging on main df each store df
for branch in ['facebook', 'apple', 'apple', 'uber']:
    df_res = df_res.merge(df[df.store.isin([branch])].groupby(['store','type', pd.Grouper(key = 'day', freq = 'W-MON',
                          label = 'right')])[['store','day','orders','sales','type']].sum().reset_index(), 
                          on =['day','type'], suffixes= [f'_{branch}', f'_{branch}'], how = 'outer')

但這并沒有產(chǎn)生我想要的結(jié)構(gòu),我嘗試使用join,但這會(huì)拋出一個(gè)不同的長(zhǎng)度錯(cuò)誤,因?yàn)橛袝r(shí)給定商店的特定date & type組合沒有銷售。

? 最佳回答:

您可以pivot并重新編寫多索引:

df2 = (df.pivot_table(index=['day', 'type'], columns='store',
                      values=['sales', 'orders'], fill_value=0)
         .sort_index(axis=1, level=1)
       )

df2.columns = df2.columns.map('_'.join)
df2.reset_index()

output:

          day    type  orders_amazon  sales_amazon  orders_apple  sales_apple  orders_facebook  sales_facebook  orders_uber  sales_uber
0  2021-08-01  retail              0             0             0            0                0               0            1          60
1  2021-08-01     web              0             0             0            0                0               0            1          50
2  2021-09-01     web              0             0             1            5                0               0            0           0
3  2021-09-05  retail              0             0             0            0               50              10            0           0
4  2021-10-10  retail             50           500             0            0               50             300            0           0
5  2021-10-10     web              1            10             0            0                0               0            0           0
主站蜘蛛池模板: 欧美日韩一区二区成人午夜电影 | 国产一区二区在线视频| 国产精品一区二区久久精品| 无码av免费一区二区三区| 91福利视频一区| 精品无码一区二区三区电影| 国模精品视频一区二区三区| 国产精品成人国产乱一区| 亚洲一区二区三区丝袜| 亚洲av成人一区二区三区观看在线 | 亚洲熟女综合一区二区三区| 日本在线视频一区| 秋霞无码一区二区| 激情综合一区二区三区| 精品一区二区高清在线观看| 无码人妻久久一区二区三区| 日本一区二区三区日本免费| 亚洲一区二区三区成人网站| 在线播放一区二区| 久久久91精品国产一区二区| 日韩AV无码一区二区三区不卡| 久久精品视频一区| 寂寞一区在线观看| 中文字幕在线观看一区二区| 国产第一区二区三区在线观看| 亚洲视频一区二区在线观看| 亚洲一区二区三区免费视频| 中文字幕精品一区二区精品| 小泽玛丽无码视频一区| 日本一区二区三区在线视频观看免费 | 日本中文字幕在线视频一区| 国产视频一区在线播放| 精品国产一区二区三区| 波多野结衣中文字幕一区| 天天爽夜夜爽人人爽一区二区| 一区二区高清在线观看| 国产在线精品一区二区高清不卡| 亚洲一区精品无码| 国产精品视频免费一区二区| 一区二区免费电影| 99精品一区二区三区|