Skip to main content
 首页 » 编程设计

python之如何使用 Pandas 用那天的 temperature_min 和 temperature_max 填充一天的剩余时间

2025年05月04日19JeffreyZhao

我有一个包含 4 列的数据框:天、时间、tmin 和tmax。 tmin 显示当天的temperature_min,tmax 显示temperature_max。 我想要的是能够用那天的 tmin 和 tmax 填充一天的所有 NaN 值。例如我想转换这个数据框:

   day time     tmin tmax  
0   01 00:00:00 NaN NaN 
1   01 03:00:00 -6.8 NaN 
2   01 06:00:00 NaN NaN 
3   01 09:00:00 NaN NaN 
4   01 12:00:00 NaN NaN 
5   01 15:00:00 NaN 1.2 
6   01 18:00:00 NaN NaN 
7   01 21:00:00 NaN NaN 
8   02 00:00:00 NaN NaN 
9   02 03:00:00 -7.2 NaN 
10  02 06:00:00 NaN NaN 
11  02 09:00:00 NaN NaN 
12  02 12:00:00 NaN NaN 
13  02 15:00:00 NaN 1.8 
14  02 18:00:00 NaN NaN 
15  02 21:00:00 NaN NaN 

到这个数据框:

       day time     tmin tmax 
    0   01 00:00:00 -6.8 1.2 
    1   01 03:00:00 -6.8 1.2 
    2   01 06:00:00 -6.8 1.2 
    3   01 09:00:00 -6.8 1.2 
    4   01 12:00:00 -6.8 1.2 
    5   01 15:00:00 -6.8 1.2 
    6   01 18:00:00 -6.8 1.2 
    7   01 21:00:00 -6.8 1.2 
    8   02 00:00:00 -7.2 1.8 
    9   02 03:00:00 -7.2 1.8 
    10  02 06:00:00 -7.2 1.8 
    11  02 09:00:00 -7.2 1.8 
    12  02 12:00:00 -7.2 1.8 
    13  02 15:00:00 -7.2 1.8 
    14  02 18:00:00 -7.2 1.8 
    15  02 21:00:00 -7.2 1.8 

请您参考如下方法:

使用 groupby 和 transform :

df.assign(**df.groupby('day')[['tmin', 'tmax']].transform('first')) 

    day      time  tmin  tmax 
0     1  00:00:00  -6.8   1.2 
1     1  03:00:00  -6.8   1.2 
2     1  06:00:00  -6.8   1.2 
3     1  09:00:00  -6.8   1.2 
4     1  12:00:00  -6.8   1.2 
5     1  15:00:00  -6.8   1.2 
6     1  18:00:00  -6.8   1.2 
7     1  21:00:00  -6.8   1.2 
8     2  00:00:00  -7.2   1.8 
9     2  03:00:00  -7.2   1.8 
10    2  06:00:00  -7.2   1.8 
11    2  09:00:00  -7.2   1.8 
12    2  12:00:00  -7.2   1.8 
13    2  15:00:00  -7.2   1.8 
14    2  18:00:00  -7.2   1.8 
15    2  21:00:00  -7.2   1.8 

或者,如果您想修改原始 DataFrame 而不是返回副本:

df[['tmin', 'tmax']] = df.groupby('day')[['tmin', 'tmax']].transform('first')