2017-07-25 1 views
-1

Ich versuche, einige Klimadaten aus dem US NCDC zu schrubben und es hat Spalten mit einer variierenden Anzahl von Sternchen, um leere Felder anzuzeigen. Ich möchte diese durch np.nan ersetzen.Ersetzen Sie eine variable Anzahl von Sternen mit NaN in einem Datenrahmen

Ich habe versucht, es mit df.replace zu tun, aber kämpfe mit der Regex-Syntax, um die variable Länge von Sternchen in einem Feld zu behandeln. Ich vermute, dass ich etwas wie , aber wo die '?' ist ein Regex zu einer beliebigen Anzahl von Sternchen benötigen. Hier

ist ein Clip der Daten:

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 ***  ***  ***** ***** ***** ***** ** 

Antwort

1

df.replace mit RegexMuster '^\*+$' für diese funktioniert gut genug:

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 
Verwandte Themen