Outline
前幾天,數據清洗時有用到pandas去過濾大量數據中的“負值”;
把過濾出來的“負值”替換為“NaN”或者指定的值。
故做個小記錄。
讀取CSV文件
代碼:
import pandas as pd import numpy as np df = pd.read_csv('D:\All_Kinds_Stock_Data\windpy_filter_after\SH600036.csv') df # 開發環境: ipython notebook 下
讀取本地csv文件,輸出結果如下:
可見里面有很多“負值”。
目的就是將這些“負值”替換掉。
過濾“負值”
代碼:
import pandas as pd import numpy as np df = pd.read_csv('D:\All_Kinds_Stock_Data\windpy_filter_after\SH600036.csv') df[ df < 0 ] # 過濾出所有小於 0 的對象 # 開發環境: ipython notebook 下
此時拿到的是csv文件中所有小於 0 的元素(也即小於 0 的DateFrame對象)
替換“負值”
將過濾出來小於 0 的DateFrame對象替換成指定值。
這里我需要將它們替換為 NaN
代碼:
import pandas as pd import numpy as np df = pd.read_csv('D:\All_Kinds_Stock_Data\windpy_filter_after\SH600036.csv') df[df < 0] = np.nan # 對過濾出來的對象進行賦值替換 df
此時,所有“負值”已被替換為 NaN
如果你想把替換后的DateFrame保存為新的csv文件的話,只需要如下操作:
df = pd.read_csv('D:\All_Kinds_Stock_Data\windpy_filter_after\SH600036.csv') df[df < 0] = np.nan df.to_csv('你的保存路徑', index=True) # index = True/False 表示是否把索引index一起寫入csv文本。