更改多索引数据框中列的值

我有一个这样的数据框:


                        holiday  

YEAR MONTH DAY TIME

2012 10    2   00:00:00       0

               06:00:00       0    

               12:00:00       0

               18:00:00       0

2012 10    3   00:00:00       1

               06:00:00       0

               12:00:00       0

               18:00:00       0

2012 10    4   00:00:00       0

               06:00:00       0

               12:00:00       0

               18:00:00       0

其中 0 表示这一天不是假期,而 1 表示这一天是假期。但是,1 仅在 00:00:00 小时出现,我想将当天的所有 0 替换为 1。


                        holiday  

YEAR MONTH DAY TIME

2012 10    2   00:00:00       0

               06:00:00       0    

               12:00:00       0

               18:00:00       0

2012 10    3   00:00:00       1

               06:00:00       1

               12:00:00       1

               18:00:00       1

2012 10    4   00:00:00       0

               06:00:00       0

               12:00:00       0

               18:00:00       0

关于如何做到这一点的任何想法?


幕布斯6054654
浏览 118回答 3
3回答

慕慕森

让我们做df['holiday']=df.groupby(level=[0,1,2]).cumsum().values

慕姐4208626

Groupby 是个好主意:# transform('any') or transform('first') also workdf['holiday'] = df.groupby(['YEAR','MONTH','DAY']).holiday.transform('max')

慕码人8056858

reindexdf.max(level=[0, 1, 2]).reindex(df.index)                         holidayYEAR 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python