我有一个看起来像这样的 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
关于python - 如何在 Pandas 数据框中以非常特定的方式处理特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52248704/