Skip to main content
 首页 » 编程设计

python之如何在 Pandas 数据框中以非常特定的方式处理特定值

2025年05月04日14qq78292959

我有一个看起来像这样的 Pandas 数据框:

     TIMESTAMP              TAIR 
0    2011-06-01 00:00:00    24.3 
1    2011-06-01 00:05:00    24.5 
2    2011-06-01 00:10:00    24.2 
3    2011-06-01 00:15:00    24.1 
4    2011-06-01 00:20:00    24.2 
5    2011-06-01 00:25:00    -999 
6    2011-06-01 00:30:00    15.1 
7    2011-06-01 00:35:00    -999 
8    2011-06-01 00:40:00    13.9 
9    2011-06-01 00:45:00    13.7 

我需要用前面的值替换它来处理缺失值(任何小于 -990 的值)。因此,如果我正确地执行此操作,新数据框将如下所示:

     TIMESTAMP              TEMP 
0    2011-06-01 00:00:00    24.3 
1    2011-06-01 00:05:00    24.5 
2    2011-06-01 00:10:00    24.2 
3    2011-06-01 00:15:00    24.1 
4    2011-06-01 00:20:00    24.2 
5    2011-06-01 00:25:00    24.2 
6    2011-06-01 00:30:00    15.1 
7    2011-06-01 00:35:00    15.1 
8    2011-06-01 00:40:00    13.9 
9    2011-06-01 00:45:00    13.7 

时间戳是日期时间数据类型。

我现在的做法是使用这样的 for 循环:

for index, row in df.iterrows(): 
    if row['TAIR'] < -990: 
        data.loc[index, 'TAIR'] = data.loc[index-1, 'TAIR'] 

有更好/更快的方法吗?

请您参考如下方法:

使用掩码和ffill:

df.assign(TAIR=df.TAIR.mask(df.TAIR.le(-999)).ffill()) 

             TIMESTAMP  TAIR 
0  2011-06-01 00:00:00  24.3 
1  2011-06-01 00:05:00  24.5 
2  2011-06-01 00:10:00  24.2 
3  2011-06-01 00:15:00  24.1 
4  2011-06-01 00:20:00  24.2 
5  2011-06-01 00:25:00  24.2 
6  2011-06-01 00:30:00  15.1 
7  2011-06-01 00:35:00  15.1 
8  2011-06-01 00:40:00  13.9 
9  2011-06-01 00:45:00  13.7