#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
неправильное. Любые предложения по обработке этого крайнего случая?