Что я здесь не так делаю? У меня есть фрейм данных, где я добавляю два новых столбца, первый создает счетчик, добавляя все значения в каждом столбце справа, которые равны 1. Эта часть работает нормально. Следующая часть кода должна давать среднее значение всех значений справа, которые не равны 0. По какой-то причине это также учитывает значения слева. Вот код Спасибо за любую помощь.
Я попробовал свой код, а также оба приведенных ниже решения, и все еще получаю неправильное среднее значение. Вот упрощенная версия со случайным фреймом данных и всеми тремя версиями кода. Я удалил значения слева и все еще имею проблему среднего значения, являющегося неправильным. Может быть, это поможет.
Версия 1:
df = pd.DataFrame(np.random.randint(0,3,size=(10, 10)), columns=list('ABCDEFGHIJ'))
idx_last = len(df.columns)
df.insert(loc=0, column='new', value=df[df[0:(idx_last+1)]==1].sum(axis=1))
idx_last = len(df.columns)
df.insert(loc=1, column='avg', value=df[df[0:(idx_last+1)]!=0].mean(axis=1))
df
Версия 2:
df = pd.DataFrame(np.random.randint(0,3,size=(10, 10)), columns=list('ABCDEFGHIJ'))
df.insert(loc=0, column='new', value=(df.iloc[:, 0:]==1).sum(axis=1))
df.insert(loc=1, column='avg', value=(df.iloc[:, 1:]!=0).mean(axis=1))
df
Версия 3:
df = pd.DataFrame(np.random.randint(0,3,size=(10, 10)), columns=list('ABCDEFGHIJ'))
idx_last = len(df.columns)
loc_value=0
df.insert(loc=loc_value, column='new', value=df[df[loc_value:(idx_last+1)]==1].sum(axis=1))
idx_last = len(df.columns)
loc_value=1
df.insert(loc=loc_value, column='avg', value=df[df[loc_value: (idx_last+1)]!=0].sum(axis=1))
df