如果我有 Dataframe :
Class Dates
1 2022.01.12
2 2022.01.13
3 2022.01.15
4 2022.01.20
5 2022.01.21
6 2022.01.22
7 2022.01.22
我想得到
Class Dates Notes
1 2022.01.12 Min
2 2022.01.13 Max
3 2022.01.15 Singledate
4 2022.01.20 Min
5 2022.01.21
6 2022.01.22
7 2022.01.22 Max
8 2022.01.30 Singledate
请注意列包含期间信息。如果存在时间范围期间(标记为如果日期连续),则将最小值放在第一天,将最大值放在期间结束时。如果只有单个日期/不连续,则写“singledate”。
尝试用此代码填充“Notes”,但似乎毫无结果,并且卡住了
for idx, dates in df['Dates]:
df['Notes']='min
if df['Dates'].diff() == 1 :
df['Notes']=''
elif :
df['Notes']='single'
df['Notes'][idx-1] = 'max'
1条答案
按热度按时间juzqafwq1#
产出
“日期”列将转换为日期格式。将创建一个具有天数差异的“Dif”列。0将替换为1。
我使用了列表解析,因为它比循环快很多倍。列表解析检查条件:current 'Dif' = 1,past不等于current。当条件被触发时,调用一个函数,通过loc填充所需的值。最后,填充带有'Singledate'的行。