我正在尝试从美国NCDC清除一些气候数据,并且它有不同数量的星号列表示空白字段。我想用np.nan
替换那些。
我试图用df.replace
来做,但我正在努力使用正则表达式语法来处理字段中可变长度的星号。
我怀疑我需要类似df.replace('?', np.NaN)
的内容,但'?'
是一个正则表达式,可以匹配任意数量的星号。
以下是数据的剪辑:
USAF WBAN YR--MODAHRMN DIR SPD GUS CLG SKC L M ... SLP ALT STP MAX MIN PCP01 PCP06 PCP24 PCPXX SD
0 722543 12977 200601010053 160 6 *** 722 CLR * * ... 1010.9 29.83 1007.2 *** *** 0.00 ***** ***** ***** **
1 722543 12977 200601010153 160 9 *** 722 CLR * * ... 1011.0 29.83 1007.2 *** *** 0.00 ***** ***** ***** **
2 722543 12977 200601010253 160 9 *** 722 CLR * * ... 1011.1 29.83 1007.2 *** *** 0.00 ***** ***** ***** **
3 722543 12977 200601010313 160 10 *** 722 SCT * * ... ****** 29.83 1007.2 *** *** ***** ***** ***** ***** **
4 722543 12977 200601010321 160 10 *** 4 BKN * * ... ****** 29.83 1007.2 *** *** ***** ***** ***** ***** **
答案 0 :(得分:1)
df.replace
的 '^\*+$'
适用于此:
In [790]: df.replace('^\*+$', np.nan, regex=True)
Out[790]:
USAF WBAN YR--MODAHRMN DIR SPD GUS CLG SKC L M SLP \
0 722543 12977 200601010053 160 6 NaN 722 CLR NaN NaN 1010.9
1 722543 12977 200601010153 160 9 NaN 722 CLR NaN NaN 1011.0
2 722543 12977 200601010253 160 9 NaN 722 CLR NaN NaN 1011.1
3 722543 12977 200601010313 160 10 NaN 722 SCT NaN NaN NaN
ALT STP MAX MIN PCP01 PCP06 PCP24 PCPXX SD
0 29.83 1007.2 NaN NaN 0.00 NaN NaN NaN NaN
1 29.83 1007.2 NaN NaN 0.00 NaN NaN NaN NaN
2 29.83 1007.2 NaN NaN 0.00 NaN NaN NaN NaN
3 29.83 1007.2 NaN NaN NaN NaN NaN NaN NaN