Как функция суммы работает с элементом NaN? - PullRequest
0 голосов
/ 06 октября 2019

У меня есть DataFrame с некоторыми значениями NaN. В этом DataFrame есть несколько строк со всеми значениями NaN. Когда я применяю функцию суммы к этим строкам, она возвращает ноль вместо NaN. Код выглядит следующим образом:

df = pd.DataFrame(np.random.randint(10,60,size=(5,3)),
              index = ['a','c','e','f','h'],
              columns = ['One','Two','Three'])

df = df.reindex(index=['a','b','c','d','e','f','g','h'])
print(df.loc['b'].sum())

Любое предложение?

1 Ответ

1 голос
/ 06 октября 2019

функция суммы принимает значения NaN как 0.

, если вы хотите, чтобы результатом суммы значений NaN было NaN:

df.loc['b'].sum(min_count=1)

Вывод:

nan

если применить ко всем строкам (после использования переиндексации), вы получите следующее:

df.sum(axis=1,min_count=1)

a    137.0
b      NaN
c     79.0
d      NaN
e    132.0
f     95.0
g      NaN
h     81.0
dtype: float64

, если вы теперь измените значение NaN строки:

df.at['b','One']=0
print(df)


    One   Two  Three
a  54.0  20.0   29.0
b   0.0   NaN    NaN
c  13.0  24.0   27.0
d   NaN   NaN    NaN
e  28.0  53.0   25.0
f  46.0  55.0   50.0
g   NaN   NaN    NaN
h  47.0  26.0   48.0

df.sum(axis=1,min_count=1)

a    103.0
b      0.0
c     64.0
d      NaN
e    106.0
f    151.0
g      NaN
h    121.0
dtype: float64

, как вы можете видетьтеперь результат строки b равен 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...