簡體   English   中英

Pandas dropna() 在所有列和行中都有許多 NaN

[英]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.

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