【发布时间】:2020-10-14 16:46:51
【问题描述】:
我正在尝试根据第一个和第二个记录之间的差异创建新记录,以及从第二个到第三个,每个 Id 等等。 pandas.diff() 和 pandas.shift() 除了告诉我第一条记录和第二条记录之间的总天数差异等之外,没有起到任何作用。
按照此处发布的解决方案Creating new rows in df based on date range 不起作用,因为我的数据集中没有结束日期。
假设以下数据集:
df1=pd.DataFrame(columns=['Id','Code','Date'])
Ids=[1,1,1,2,2,2,2,3,3]
Codes=[8,9,11,5,6,7,8,7,8]
Dates=['2020-07-02','2020-06-16','2020-04-07',
'2020-02-19','2020-03-18','2020-05-02','2020-07-02',
'2020-05-19','2020-03-24']
df1.Id=Ids
df1.Code=Codes
df1.Date=Dates
Id Code Date
1 8 2020-07-02
1 9 2020-06-16
1 11 2020-04-07
2 5 2020-02-19
2 6 2020-03-18
2 7 2020-05-02
2 8 2020-07-02
3 7 2020-05-19
3 8 2020-03-24
我想要达到的结果是:
Id Code Date
1 8 2020-07-02
1 9 2020-06-16
1 11 2020-05-01
1 11 2020-04-07
2 5 2020-02-19
2 6 2020-03-18
2 7 2020-04-01
2 7 2020-05-02
2 8 2020-06-01
2 8 2020-07-02
3 7 2020-05-19
3 8 2020-04-01
3 11 2020-03-24
您可以看到,对于日期和代码之间的每个缺失日期,都会创建一条新记录,指定两条记录之间的月份,并且在这条新记录中,代码的副本是从其先前的记录制作的。
【问题讨论】:
标签: python pandas date datetime