3 回答

TA貢獻1852條經驗 獲得超7個贊
Groupby 是個好主意:
# transform('any') or transform('first') also work
df['holiday'] = df.groupby(['YEAR','MONTH','DAY']).holiday.transform('max')

TA貢獻1803條經驗 獲得超6個贊
reindex
df.max(level=[0, 1, 2]).reindex(df.index)
holiday
YEAR MONTH DAY TIME
2012 10 2 00:00:00 0
06:00:00 0
12:00:00 0
18:00:00 0
3 00:00:00 1
06:00:00 1
12:00:00 1
18:00:00 1
4 00:00:00 0
06:00:00 0
12:00:00 0
18:00:00 0
設置
idx = pd.MultiIndex.from_product([
[2012], [10], [2, 3, 4],
pd.timedelta_range(0, periods=4, freq='6H')
], names=['YEAR', 'MONTH', 'DAY', 'TIME'])
df = pd.DataFrame({'holiday': [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]}, idx)
添加回答
舉報