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

时间:2020-04-16 20:40:44

标签: python pandas

我有一个这样的数据框:

                        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

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

3 个答案:

答案 0 :(得分:2)

让我们这样做

001

答案 1 :(得分:2)

Groupby是一个好主意:

Promise

答案 2 :(得分:1)

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)