示例:我有日內資料框(沒有天數)
df = Column
Date
2005-01-03 08:00:00 88.6008
2005-01-03 08:01:00 88.5571
2005-01-03 08:02:00 88.5571
2005-01-03 08:03:00 88.5717
2005-01-03 08:04:00 88.5644
... ...
2021-10-08 19:54:00 437.3900
2021-10-08 19:56:00 437.3900
2021-10-08 19:58:00 437.3700
2021-10-08 19:59:00 437.3500
2021-10-08 20:00:00 437.8600
我需要在所有日子里做點什么,除了一些特殊的日子,比如
special days = Index(['2007-07-27', '2007-08-10', '2008-08-18', '2008-09-10', '2008-09-19',
'2008-09-22', '2008-09-29', '2008-10-01', '2008-10-14', '2008-10-15',
'2008-11-20', '2008-11-21', '2008-11-24', '2008-12-01', '2008-12-02',
'2008-12-15', '2008-12-22', '2009-01-09', '2009-01-15', '2009-01-20',
'2009-02-18', '2009-03-30', '2009-04-17', '2009-05-12', '2009-07-02',
'2009-11-19', '2010-01-28', '2010-05-04', '2010-05-14', '2010-08-18',
'2010-09-28', '2011-03-10', '2011-08-09', '2011-08-10', '2011-09-09',
'2011-09-13', '2011-10-05', '2011-10-07', '2011-10-25', '2012-11-07',
'2015-01-12', '2015-01-22', '2015-04-01', '2015-08-25', '2015-08-26',
'2016-01-14', '2018-02-09', '2020-03-03', '2020-03-10', '2020-03-13',
'2020-03-17', '2020-03-19', '2020-03-23', '2020-04-07', '2020-04-13',
'2020-05-04', '2020-06-29', '2020-09-21', '2020-11-06', '2020-11-09',
'2021-01-27', '2021-01-29'],
dtype='object')
好吧,現在才注意到我沒有通過 to_datetime() 使它們成為 DatetimeIndex,沒關系,我會做到的。
所以......我可以做這樣的事情:tmp_df = df.loc[:special_days[0]]
對那部分做一些事情,然后對那部分做一些事情:tmp_df[special_days[0]]
最后,我需要第二天special_days[0]但要確保第二天將在資料幀資料中并從第二天開始定位直到 special_days[1] 并做我想做的任何事情。
嗯,我知道,有一些簡單的解決方案,比如將我的原始資料分成這樣的部分:
df_normal_days = df[~df.index.isin(special_days)]
df_special_days = df[df.index.isin(special_days)]
并迭代成對的日期,但有沒有辦法得到第二天?像 get_loc 什么的:/
uj5u.com熱心網友回復:
用:
special_days = pd.to_datetime(special_days)
idx_norm = df.index.normalize()
for days in zip(special_days, special_days[1:]):
print (days)
df_special_days = df[idx_norm.isin(days)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336084.html
