Значение строки Pandas с NaN

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

У меня есть образец pandas DF:

 df = pd.DataFrame(np.random.randint(0,10,size =(6,2)),columns=["A","B"])
df.loc[2,"B"]=np.NaN
df
  

Пример DF:

     A    B
0   5   0.0
1   4   8.0
2   6   NaN
3   8   9.0
4   4   7.0
5   5   4.0
  

Я пытаюсь получить mean весь DF в DataFrame формате:

 pd.DataFrame(df.mean(axis=0)).transpose()
  

OP:

       A          B
0   5.333333    5.6
  

OP Верно для столбца A , но для столбца B OP 5.6 из 28/5 -за, но это изначально 6 строки, и он пренебрегает строкой со NaN значением, есть ли какой-нибудь способ включить и эту строку?

Ожидаемый OP — где для столбца A its 32/6 и для столбца B its 28/6 :

       A          B
0   5.333333    4.66666666
  

Комментарии:

1. df.sum(0)/len(df) ?

Ответ №1:

Проще заменить пропущенные значения на 0 , затем Series.to_frame для одного столбца DataFrame и транспонировать:

 df = df.fillna(0).mean().to_frame().T
print (df)
          A         B
0  5.333333  4.666667
  

Или yatu решение из комментария разделить сумму фрейма данных на длину:

 df = df.sum().div(len(df)).to_frame().T
print (df)
          A         B
0  5.333333  4.666667
  

Комментарии:

1. Спасибо, это сработало. Но один вопрос, хотя, если все значения в столбце NaN равны, оно будет изменено на 0 неправильное. Любые предложения по обработке этого крайнего случая?