簡體   English   中英

Pandas fillna:輸出仍然具有NaN值

[英]Pandas fillna: Output still has NaN values

我在熊貓身上遇到了一個奇怪的問題。 我有一個具有幾個NaN值的Dataframe。 我以為我可以使用列方式填充那些NaN值(也就是說,用其列的平均值填充每個NaN值)但是當我嘗試以下時

  col_means = mydf.apply(np.mean, 0)
  mydf = mydf.fillna(value=col_means)

我仍然看到一些NaN值。 為什么?

是因為我的原始數據col_means NaN值比col_means條目col_means嗎? 而且逐行填充與逐行填充之間究竟有什么區別?

你可以只fillnadf.mean()系列(這是類似字典的):

In [11]: df = pd.DataFrame([[1, np.nan], [np.nan, 4], [5, 6]])

In [12]: df
Out[12]:
    0   1
0   1 NaN
1 NaN   4
2   5   6

In [13]: df.fillna(df.mean())
Out[13]:
   0  1
0  1  5
1  3  4
2  5  6

注意: df.mean()是行方式,它給出了填充值:

In [14]: df.mean()
Out[14]:
0    3
1    5
dtype: float64

注意:如果df.mean()有一些NaN值,那么這些將在DataFrame的fillna中使用,也許你想在這個系列上使用fillna ie

df.mean().fillna(0)
df.fillna(df.mean().fillna(0))

暫無
暫無

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

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