为了账号安全,请及时绑定邮箱和手机立即绑定

如何在熊猫中分组和合并

如何在熊猫中分组和合并

慕尼黑的夜晚无繁华 2021-09-11 20:17:22
我在熊猫中有以下数据框  Date          Time   Tank       Sales       Quantity        Delivery  2018-01-01    06:30  1          100         3444            0        2018-01-01    07:00  1          200         3144            0  2018-01-01    05:30  1          100         2900            0        2018-01-01    07:30  1          200         2800            0  2018-01-01    06:30  2          50          3000            0        2018-01-01    07:00  2          100         2950            0  2018-01-01    05:30  2          150         2800            0        2018-01-01    07:30  2          100         2704            0  2018-01-02    06:30  1          100         3444            0        2018-01-02    07:00  1          200         3144            0  2018-01-02    05:30  1          100         2900            50        2018-01-02    07:30  1          200         2800            0  2018-01-02    06:30  2          50          3000            0        2018-01-02    07:00  2          100         2950            0  2018-01-02    05:30  2          150         2800            50       2018-01-02    07:30  2          100         2704            0我想在一天和坦克级别进行汇总,以获得当天的第一个和最后一个数量(按升序排列时间)以及销售和交付的总和。我想要的数据框是  Date          Tank    Open    Close   Sales    Delivery  2018-01-01    1       2900    2800    600      0           2018-01-01    2       2800    2704    400      0            2018-01-02    1       2900    2800    600      50       2018-01-02    2       2800    2704    500      50目前我正在熊猫中关注这是为了按升序获取第一个和最后一个数量天和罐位排列时间。  data_open_close_inv = data.sort_values(['Date','Tank','Time']).groupby(['Date','Tank'])['Quantity'].agg(['first','last']).reset_index()然后我将其汇总为销售和交付的总和data_agg = data.groupby(['Date','Tank'], as_index = False).agg({'Sales':['sum'],'Delivery':['sum']}).reset_index()然后再次结合两者。我可以在熊猫中一步完成所有事情吗?
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以传递一个带有标量函数名称和列表的字典,但有必要展平 MultiIndex 和rename列:


data_open_close_inv = (data.sort_values(['Date','Tank','Time'])

                           .groupby(['Date','Tank'])

                           .agg({'Sales':'sum','Delivery':'sum', 'Quantity':['first','last']})

                           .reset_index())


data_open_close_inv.columns = data_open_close_inv.columns.map(''.join)

d = {'Salessum':'Sales',

     'Delivery_sum':'Delivery',

     'Quantityfirst':'Open',

     'Quantitylast':'Close',

     }

data_open_close_inv = data_open_close_inv.rename(columns=d)

print (data_open_close_inv)

        Date  Tank  Sales  Deliverysum  Open  Close

0 2018-01-01     1    600            0  2900   2800

1 2018-01-01     2    400            0  2800   2704

2 2018-01-02     1    600           50  2900   2800

3 2018-01-02     2    400           50  2800   2704


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信