gpt4 book ai didi

python - 基于另一个数据框将值从一列滚动到另一列

转载 作者:行者123 更新时间:2023-12-04 10:30:07 26 4
gpt4 key购买 nike

我有两个数据框:DF1

ID  DatePaid   Remaining
A1 2018-01-01 8500
A2 2018-02-15 2000
A2 2018-02-28 1900
A3 2018-04-12 3000
A3 2018-05-12 2700
A3 2018-05-17 110
A3 2018-06-17 0
A4 2018-06-18 10
A5 2018-07-13 500

现在我有另一个数据框 DF2它只有来自第一个数据帧的唯一 ID,以及代表月份的日期:
ID 2018-01-31 2018-02-28 2018-03-31 2018-04-30 2018-05-31 2018-06-30 2018-07-31
A1
A2
A3
A4
A5

因此,基于第一个数据帧,我需要根据 Remaining 填充值对应月份内第一个数据帧中的值(例如,我从 A3 中取 2018-05 的最后一个值,并将其放入 2018-05-31 列中 DF2 。如果没有其他该 ID 的值只是用最右边的填充列中的值填充 DF 中的所有剩余列(向右滚动)。

所以最终的结果是这样的
ID  2018-01-31 2018-02-28 2018-03-31 2018-04-30 2018-05-31 2018-06-30 2018-07-31
A1 8500 8500 8500 8500 8500 8500 8500
A2 NA 1900 1900 1900 1900 1900 1900
A3 NA NA NA 3000 110 0 0
A4 NA NA NA NA NA 10 10
A5 NA NA NA NA NA NA 500

最佳答案

这为您提供了 df2 中的数据形式:

month_ends = pd.to_datetime(df1.DatePaid).dt.to_period('M')
# also
# month_ends = pd.to_datetime(df1.DatePaid).add(pd.offsets.MonthEnd(0))

(df1.groupby(['ID', month_ends])
['Remaining'].last()
.unstack(-1)
.ffill(1)
.reset_index()
.rename_axis(columns=None)
)

输出:
   ID  2018-01  2018-02  2018-04  2018-05  2018-06  2018-07
0 A1 8500.0 8500.0 8500.0 8500.0 8500.0 8500.0
1 A2 NaN 1900.0 1900.0 1900.0 1900.0 1900.0
2 A3 NaN NaN 3000.0 110.0 0.0 0.0
3 A4 NaN NaN NaN NaN 10.0 10.0
4 A5 NaN NaN NaN NaN NaN 500.0

关于python - 基于另一个数据框将值从一列滚动到另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60455539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com