我有一个熊猫数据栏,它由一个日期列和一个名为isHoliday的二进制列组成,其中只有一个是假日,一个不是假日。我想再创建两列。一个是从date列到isHoliday列的天数,它从date列和列计算到下一个假期的天数。第二,假日列之后的天数,该列计算从date列和isHoliday列到最后一个假日的天数。
发布于 2022-09-10 17:03:32
由于您没有共享一个可重定义的示例,这里有一种方法(深受@解决方案的启发),可以根据由10个连续日期组成的数据格式中的Date和isHoliday两列计算自/到上一个/下一个假日的天数。
import pandas as pd
# --- CREATING A SIMPLE DATASET
df = pd.DataFrame(pd.date_range("2022", periods=10), columns=['Date'])
df["isHoliday"] = [1, 0, 0, 0, 0, 0, 0, 1, 0, 0]
# --- CALCULATING THE TIME DELTAS
holidays = df['Date'].loc[df['isHoliday'] == 1].tolist()
holidays = pd.to_datetime(holidays, dayfirst=True)
df_hd = pd.DataFrame({'date1':holidays})
out = pd.merge_asof(df, df_hd, left_on='Date', right_on='date1', direction='forward')
out = pd.merge_asof(out, df_hd, left_on='Date', right_on='date1')
out['Days since the last holiday'] = out['Date'].sub(out.pop('date1_y')).dt.days
out['Days until the next holiday'] = out.pop('date1_x').sub(out['Date']).dt.days>>> display(out)

https://stackoverflow.com/questions/73673351
复制相似问题