【问题标题】:Rolling Year to Date percentage change with groupby使用 groupby 滚动年初至今百分比变化
【发布时间】:2022-02-22 15:52:17
【问题描述】:

我有一个大数据框。您将在下面找到它的摘录:

lst=[['31122020','A',12],['31012021','A',14],['28022021','A',15],['31032021','A',17]]
df2=pd.DataFrame(lst, columns=['Date','FN','AuM'])

我想计算AuM 列的年初至今 (YTD)。新列应如下所示:

lst=[['31122020','A',12,'NaN'],['31012021','A',14,0.167],['28022021','A',15,0.25],['31032021','A',17,0.417]]
df2=pd.DataFrame(lst, columns=['Date','FN','AuM','AuM_YTD_%Change'])

你知道任何可以达到我目标的熊猫功能吗?

【问题讨论】:

    标签: python pandas dataframe date percentage


    【解决方案1】:

    您可以为一年内的日期创建掩码,然后使用diff + cumsum 进行更改,并使用div 进行更改率:

    df2['Date'] = pd.to_datetime(df2['Date'], format='%d%m%Y')
    msk = df2['Date'] < df2.loc[0, 'Date'] + pd.to_timedelta(365, unit='D')
    df2['AuM_YTD_%Change'] = df2.loc[msk, 'AuM'].diff().cumsum().div(df2.loc[0,'AuM'])
    

    输出:

            Date FN  AuM  AuM_YTD_%Change
    0 2020-12-31  A   12              NaN
    1 2021-01-31  A   14         0.166667
    2 2021-02-28  A   15         0.250000
    3 2021-03-31  A   17         0.416667
    

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多