fillna()产生NaN值

时间:2016-07-15 16:22:24

标签: python pandas dataframe na

我使用以下代码填充NaN值,然后向DataFrame添加一列,其中包含一行中大于0的值的数量。这里'代码:

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值。

任何指针都会受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

您是否在第一个NaN条目中看到了sum?这一行:

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.