我有以下数据框:
我想分割每个 id 行,这样我就可以为每个 months_length
分配一行。 ,从 reporting_month
日期开始,像这样:
我尝试了多种方法,但似乎无法达到我的目标。
有人对如何实现这一目标有建议吗?
谢谢。
最佳答案
一种可能的解决方案是,
df= df.loc[df.index.repeat(df['months_length'])].reset_index(drop=True)
df['reporting_month_number'] = df.groupby('id')['reporting_month_number'].cumsum()
操作:
id date_start date_end reporting_month \
0 1 2022-03-31 23:56:22 2022-05-01 23:56:22 2022-03
1 1 2022-03-31 23:56:22 2022-05-01 23:56:22 2022-03
2 1 2022-03-31 23:56:22 2022-05-01 23:56:22 2022-03
3 2 2022-03-31 23:48:48 2022-06-01 23:48:48 2022-03
4 2 2022-03-31 23:48:48 2022-06-01 23:48:48 2022-03
5 2 2022-03-31 23:48:48 2022-06-01 23:48:48 2022-03
6 2 2022-03-31 23:48:48 2022-06-01 23:48:48 2022-03
7 3 2022-03-31 23:47:36 2022-08-01 23:47:36 2022-03
8 3 2022-03-31 23:47:36 2022-08-01 23:47:36 2022-03
9 3 2022-03-31 23:47:36 2022-08-01 23:47:36 2022-03
10 3 2022-03-31 23:47:36 2022-08-01 23:47:36 2022-03
11 3 2022-03-31 23:47:36 2022-08-01 23:47:36 2022-03
12 3 2022-03-31 23:47:36 2022-08-01 23:47:36 2022-03
reporting_month_number months_length
0 1 3
1 2 3
2 3 3
3 1 4
4 2 4
5 3 4
6 4 4
7 1 6
8 2 6
9 3 6
10 4 6
11 5 6
12 6 6
说明:
- 根据 Month_length 重复行
- 根据 groupby“id”更新报告月份编号
关于python - 根据列中的整数展开行并拆分为日期之间的月数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73195918/