【发布时间】:2021-01-05 10:52:56
【问题描述】:
我有以下 Pandas 数据框。第一列是 YYYY-MM-DD 格式的日期。它有逐月数据,但月份开始可能不一定是第一个月,最后一个月可能不一定是 31 或 30,也不一定是 29 或 28,以防 2 月。它可能会有所不同。例如,2020 年 2 月只有 2020 年 2 月 3 日的数据,而 2 月的最后可用数据是 2020 年 2 月 28 日(不是 29 日)。
Date start_Value end_value
2020-01-01 115 120
2020-01-02 122 125
2020-01-03 125.2 126
...
2020-01-31 132 135
2020-02-03 135.5 137
2020-02-04 137.8 138
...
2020-02-28 144 145
我的目标是创建一个新列,用于计算数据框中上个月最后一个可用日期的结束值与数据帧中下个月最后一个可用日期的结束值之间的百分比差异。除该月的最后一个可用日期外,所有日期都应为 0。对于 2020 年 1 月,由于我们没有上个月的数据,因此应使用当月第一个可用日期的结束值来计算百分比差异。
对于 2020 年 1 月,将计算 2020 年 1 月 1 日的终值与 2020 年 1 月 31 日的终值之间的百分比差异。 其余部分(例如从 2020 年 2 月开始:百分比差异是在 2020 年 1 月 31 日的最终值和 2020 年 2 月 28 日的最终值之间计算的)。
Date start_Value end_value percentage difference
2020-01-01 115 120 0
2020-01-02 122 125 0
2020-01-03 125.2 126 0
...
2020-01-31 132 135 17.4
2020-02-03 135.5 137 0
2020-02-04 137.8 138 0
...
2020-02-28 144 145 7.41
如何在 python 和 pandas 中实现这一点?
【问题讨论】: