[英]Pandas dropna() with many NaNs in all columns and rows
我有一個 dataframe 有幾百行和幾列,想刪除所有的 NaN。 不幸的是,所有列和所有行中都有 NaN。
df = df.dropna(how = "any")
因此將導致一個空的 dataframe。 我使用 while 循環迭代地刪除具有閾值的列。
i = 0
while df.isna().sum().sum() != 0:
i += 0.01
df= df.dropna(thresh=(i * df.shape[0]), axis= 0)
df= df.dropna(thresh=(i * df.shape[1]), axis= 1)
這種貪心算法不止一種方式可以確定次優解決方案。
除了編寫我自己的線性程序以最大程度地減少刪除的數據之外,是否還有我不知道的內置功能? 我的目標是盡可能多地保存數據。
鑒於您在評論中的動機,我可以建議您嘗試使用 Pandas 的interpolate()
方法。
df = df.interpolate()
您可以使用 method 嘗試不同的插值method
。
例如,您可以使用
df = df.interpolate(method='quadratic')
如果您的時間序列數據正在以更快的速度增長。 (請注意,您必須安裝scipy
才能使用method
參數。)
請參閱此處的 Pandas 文檔。
此外,您可以嘗試使用其他數據插補方法。 本文解釋了一些數據插補方法。
特別是, Hot Deck 插補可能適用於您的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.