fillna() 产生 NaN 值

fillna() produces NaN values

我使用以下代码填充 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

任何指点将不胜感激。

您在第一个 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.