Я хочу создать столбец в фрейме данных pandas, который бы добавил значения других столбцов (которые равны 0 или 1).столбец называется «сумма»
мой HEADPandas выглядит как:
Application AnsSr sum Col1 Col2 Col3 .... Col(n-2) Col(n-1) Col(n)
date 28-12-11 0.0 0.0 28/12/11 .... ...Dates... 28/12/11
~00c 0 0.0 0.0 0 0 0 .... 0 0 0
~00pr 0 0.0 0.0 0 0 0 .... 0 0 0
~00te 0 0.0 0.0 0 0 1 .... 0 0 1
на изображении из pythoneverywhere:
ожидаемый результат(при условии, что больше не будет столбцов
Application AnsSr sum Col1 Col2 Col3 .... Col(n-2) Col(n-1) Col(n)
date 28-12-11 0.0 nan 28/12/11 .... ...Dates... 28/12/11
~00c 0 0.0 0.0 0 0 0 .... 0 0 0
~00pr 0 0.0 0.0 0 0 0 .... 0 0 0
~00te 0 0.0 2 0 0 1 .... 0 0 1
, поскольку вы видите, что значения 'sum' сохраняются в 0, даже если в некоторых столбцах есть значения 1s. Что я делаю неправильно?
Основы кода:
theMatrix=pd.DataFrame([datetime.today().strftime('%Y-%m-%d')],['Date'],['Application'])
theMatrix['Ans'] = 0
theMatrix['sum'] = 0
пока все хорошо, тогда я добавляю все значения с помощью loc., А затем я хочу сложить значения с помощью
theMatrix.fillna(0, inplace=True)
# this being the key line:
theMatrix['sum'] = theMatrix.sum(axis=1)
theMatrix.sort_index(axis=0, ascending=True, inplace=True)
Как высм. в результате (прилагаемое изображение) сумма остается 0. Я посмотрел здесь или здесь и панд документация безрезультатно.выражение:
theMatrix['sum'] = theMatrix.sum(axis=1)
Я получил его оттуда.
изменив эту последнюю строку на:
theMatrix['sum'] = theMatrix[3:0].sum(axis=1)
, чтобы избежать суммирования первых трех столбцов, даетрезультат:
Application AnsSr sum Col1 Col2 Col3 .... Col(n-2) Col(n-1) Col(n)
date 28-12-11 0.0 nan 28/12/11 .... ...Dates... 28/12/11
~00c 0 0.0 nan 1 1 0 .... 0 0 0
~00pr 0 0.0 1.0 0 0 0 .... 0 0 1
~00te 0 0.0 0 0 0 0 .... 0 0 0
пожалуйста, обратите внимание на две вещи: a) как в строке '~ 00c' сумма равна nan, но в этом ряду 1.б) перед вычислением суммы код theMatrix.fillna (0, inplace = True) должен изменить все возможные значения nan на 0, поэтому сумма никогда не должна быть равна nan, поскольку в теории ни в одном из столбцов нет значений nan [3:]
это не сработает.
какая-то идея?
спасибо
PS: более поздняя редакция, на случай, если вам интересно, как заполняется информационный кадр: чтениеи синтаксический анализ XML и строки:
# myDocId being the name of the columns
# concept being the index.
theMatrix.loc[concept,myDocId]=1