2016-07-15 109 views
1

我使用以下代碼來填充NaN值,然後加入到DataFrame一列,其將包含在一排,其是大於0下面的代碼值的數目:fillna()產生NaN值

df.fillna(0, inplace=True) 
dfMin10 = df 
dfMin10['Sum'] = (dfMin10.iloc[1:len(dfMin10.columns)] > 0).sum(1) 
dfMin10 

當我看到列Sum時,我仍然看到一些NaN值。爲什麼會這樣?我假設我的DataFrame (df)也有一些NaN的值,即使在替換NaN之後。

任何指針將不勝感激。

回答

3

您是否在第一個sum條目中看到NaN條目?這條線:

branchConceptsWithScoresMin10['Sum'] = (branchConceptsWithScoresMin10.iloc[1:len(branchConceptsWithScoresMin10.columns)] > 0).sum(1) 

如果這是:

branchConceptsWithScoresMin10['Sum'] = (branchConceptsWithScoresMin10.iloc[0:len(branchConceptsWithScoresMin10.columns)] > 0).sum(1) 

注意從0開始索引。

df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z']) 
df.fillna(0, inplace=True) 
branchConceptsWithScoresMin10 = df 
# Your original code 
branchConceptsWithScoresMin10['Sum'] = (branchConceptsWithScoresMin10.iloc[1:len(branchConceptsWithScoresMin10.columns)] > 0).sum(1) 

# This should return 
# a b c d Sum 
# x 0 0 0 0 NaN 
# y 0 0 0 0 0.0 
# z 0 0 0 0 0.0 

branchConceptsWithScoresMin10['Sum'] = (branchConceptsWithScoresMin10.iloc[0:] > 0).sum(1) 

# There should not be any NaNs here. 
+0

你說得對,我看到它的第一項。但是我在最後的許多條目中也看到了'NaN'。我不知道爲什麼。 – Patthebug

+0

啊,我在做一些愚蠢的事情。 IT應該是'branchConceptsWithScoresMin10 ['Sum'] =(branchConceptsWithScoresMin10.iloc [0:]> 0).sum(1)'。現在它可以工作。 – Patthebug

+0

查看你的數據框,然後在你得到'NaN'的那一行的總和之前,這應該給你一些想法。如果您在問題中發佈它,我們可以嘗試幫助。 –