簡體   English   中英

替換 Pandas 數據框中的值

[英]Replacing Values in an Pandas Dataframe

我以為我了解替換功能,但似乎我沒有。 請在下面查看我的代碼。 我只想用 NaN 替換所有 -999 值(或者讓 NULL 更有意義?)但輸出仍然包含所有數據幀中的 -999。 我錯過了什么?

          def SQLtoPandas(Connection,SQLString):
                df =pd.read_sql(SQLString, con=Connection)
                return df

            WeatherString = "select * FROM weather" 
    dfWeather = SQLtoPandas(Connection, WeatherString)

            RainkindsString = "select * FROM Rainkinds" 
    dfRainkinds = SQLtoPandas(Connection, RainkindsString)

            StationsString = "select * FROM Stations" 
    dfStations = SQLtoPandas(Connection, StationsString)

            #here is the important part. As stated, maybe replacing wiht NULL makesm ore sense? 
dfWeather.replace(-999, 0)

            #---------------------------Output Data---------------------------------------- 
        def DatenAnalyse():    
                pd.set_option('display.max_columns', None)  

                print("\n --> Zusammenfassung Wetterdaten <-- \n" )
                print(dfWeather.describe())
                print("\n --> Beispiel Wetterdaten <-- \n" )
                print(dfWeather.head(10))

                print("\n ----------------------------------------------------------------")
                print("\n \n --> Zusammenfassung Regenarten <-- \n" )
                print(dfRainkinds.describe())
                print("\n --> Beispiel Regenarten <-- \n" )
                print(dfRainkinds.head(10))

                print("\n ----------------------------------------------------------------")
                print("\n \n --> Zusammenfassung Stationen <-- \n" )
                print(dfStations.describe())
                print("\n --> Beispiel Stationen <-- \n" )
                print(dfStations.head(10))

            DatenAnalyse()

我認為你應該使用這個代碼:

dfWeather = dfWeather.replace(-999, np.nan)

您似乎沒有將帶有替換值的對象列分配給您的數據框。 用:

#here is the important part. As stated, maybe replacing wiht NULL makesm ore sense? 

dfWeather.replace(-999, 0, inplace=True)

此答案假定 dfWeather 包含開始的數值。 如果您繼續處理數據,使用 np.nan 而不是 0 可以提供更好的處理。

import numpy as np
df['Weather'] = df['Weather'].replace(-999, np.nan, inplace=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM