【发布时间】:2023-03-20 18:10:02
【问题描述】:
我正在尝试向我的 pandas 数据框中添加一个名为 rev_month 的新列。
此列应该是上一行中值的迭代相加。
first_date 列是 datetime64[ns]
这是输入:
id first_date revenue_month_number
1 2020-12-30 15:14:49 1
2 2021-03-01 01:36:23 1
2 2021-03-01 01:36:23 2
2 2021-03-01 01:36:23 3
3 2021-03-02 19:13:56 1
3 2021-03-02 19:13:56 2
3 2021-03-02 19:13:56 3
3 2021-03-02 19:13:56 4
3 2021-03-02 19:13:56 5
rev_month 列应该(通过id 迭代)总是从first_date 获取月份的开始,对于revenue_month_number == 1,并为随后的收入_月份_数字再添加一个(开始的)月份值。
期望的输出:
id first_date revenue_month_number rev_month
1 2020-12-30 15:14:49 1 2020-12-01
2 2021-03-01 01:36:23 1 2021-03-01
2 2021-03-01 01:36:23 2 2021-04-01
2 2021-03-01 01:36:23 3 2021-05-01
3 2021-03-02 19:13:56 1 2021-03-01
3 2021-03-02 19:13:56 2 2021-04-01
3 2021-03-02 19:13:56 3 2021-05-01
3 2021-03-02 19:13:56 4 2021-06-01
3 2021-03-02 19:13:56 5 2021-07-01
我尝试了多种方法,但似乎无法成功。
如果有人有建议将不胜感激!
数据框可以通过以下方式重现:
data = {'first_date': ['2020-12-30 15:14:49', '2021-03-01 01:36:23', '2021-03-01 01:36:23',
'2021-03-01 01:36:23', '2021-03-02 19:13:56', '2021-03-02 19:13:56',
'2021-03-02 19:13:56', '2021-03-02 19:13:56', '2021-03-02 19:13:56'],
'revenue_month_number': [1,1,2,3,1,2,3,4,5]}
df = pd.DataFrame.from_dict(data)
df['first_date'] = pd.to_datetime(df['first_date'])
【问题讨论】:
标签: python pandas datetime pandas-groupby