【问题标题】:Special Filtering/Grouping of Pandas DataframePandas 数据框的特殊过滤/分组
【发布时间】:2020-03-31 18:58:26
【问题描述】:

我正在尝试将 pandas 数据框按 2 列分组,然后根据最近日期对另一列进行分组,并通过对另一列中的值求和来完成。

下面是我想要做的一个例子:

     CODE     BILL_NUM   AMOUNT    DATE
1    1232      320220      $5    01/16/20 
2    1232      320320      $5    01/19/20
3    1232      320220     -$1    01/20/20
4    1216      160120      $4    01/04/20
5    1216      160120      $4    02/07/20
6    1216      160220      $2    02/08/20
7    1216      160120     -$3    02/19/20

在所需的分组/过滤后将返回:

     CODE     BILL_NUM   AMOUNT    DATE
1    1232      320220      $4    01/20/20 
2    1232      320320      $5    01/19/20
3    1216      160120      $5    02/19/20
4    1216      160220      $2    02/08/20

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    我生成的数据框; df1

    删除 $、括号并在 AMOUNT 列中引入 -

    df1['AMOUNT'] = df1['AMOUNT'].str.replace('(', '-')
    df1['AMOUNT'] = df1['AMOUNT'].str.replace(')', '')
    df1['AMOUNT'] = df1['AMOUNT'].str.replace('$', '')
    df1['AMOUNT'] = df1['AMOUNT'].astype(int)
    df1
    

    将 DATE 强制为日期时间

    df1['DATE']=pd.to_datetime(df1['DATE'])
    

    Groupby 并在多个列上聚合

    df1.groupby(['CODE','BILL_NUM']).agg({'DATE':'max','AMOUNT':'sum'}).reset_index()
    

    输出

    【讨论】:

      猜你喜欢
      • 2019-08-09
      • 2020-05-04
      • 1970-01-01
      • 2018-06-07
      • 2023-02-16
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 2017-12-15
      相关资源
      最近更新 更多