2016-07-15 107 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'的那一行的总和之前,这应该给你一些想法。如果您在问题中发布它,我们可以尝试帮助。 –