Python3.x Панды означают и стандарт возвращают NAN - PullRequest
0 голосов
/ 27 мая 2018

решение этой проблемы, которую я не могу исправить, у меня есть большой фрейм данных (образец опубликован ниже) с 5 столбцами.Я хочу рассчитать стандартное значение и среднее значение для каждой строки.каким-то образом он продолжает возвращать NaN.

   CellName                Apr-2018    Feb-2018    Jan-2018    Mar-2018  mean
0  BDG652ML_KPBENDULML1    9.450841   24.119474   27.091426   17.527006   NaN
1  BDG652ML_KPBENDULML2   15.917555   10.548731   11.019208   14.592388   NaN 
2  BDG652ML_KPBENDULML3   24.957360   21.122519   21.197216   24.950549   NaN

Я проверил, все мои столбцы месяца и float64 df.types дает:

CellName     object
Apr-2018    float64
Feb-2018    float64
Jan-2018    float64
Mar-2018    float64
dtype: object

Я знаю, что мне не нужноисключить столбец ячейки, и я могу легко получить среднее значение, используя

df['mean'] = df.mean(numeric_only =True)

Я также попытался:

df['mean'] = df.iloc[:,1:].mean(numeric_only =True)

, но все же он остаетсяНикто.То же самое и для Std.

Есть ли какие-либо подсказки о том, что я могу делать неправильно?

1 Ответ

0 голосов
/ 27 мая 2018

Используйте параметр axis=1 для mean для строк, numeric_only параметр, кажется, должен быть пропущен:

df['mean'] = df.mean(axis=1)
#df['mean'] = df.mean(numeric_only=True, axis=1)
print (df)

              CellName   Apr-2018   Feb-2018   Jan-2018   Mar-2018       mean
0  BDG652ML_KPBENDULML1   9.450841  24.119474  27.091426  17.527006  19.547187
1  BDG652ML_KPBENDULML2  15.917555  10.548731  11.019208  14.592388  13.019470
2  BDG652ML_KPBENDULML3  24.957360  21.122519  21.197216  24.950549  23.056911

df['std'] = df.std(axis=1)
print (df)

              CellName   Apr-2018   Feb-2018   Jan-2018   Mar-2018       std
0  BDG652ML_KPBENDULML1   9.450841  24.119474  27.091426  17.527006  7.828126
1  BDG652ML_KPBENDULML2  15.917555  10.548731  11.019208  14.592388  2.644401
2  BDG652ML_KPBENDULML3  24.957360  21.122519  21.197216  24.950549  2.190731

Если хотите добавить оба столбца assign ваш друг, потому что mean или std нужно рассчитывать только по исходным числовым столбцам:

df = df.assign(std=df.std(axis=1), mean=df.mean(axis=1))
print (df)

               CellName   Apr-2018   Feb-2018   Jan-2018   Mar-2018       std  \
0  BDG652ML_KPBENDULML1   9.450841  24.119474  27.091426  17.527006  7.828126   
1  BDG652ML_KPBENDULML2  15.917555  10.548731  11.019208  14.592388  2.644401   
2  BDG652ML_KPBENDULML3  24.957360  21.122519  21.197216  24.950549  2.190731   

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