Мне нужно нормализовать строки кадра данных, содержащие строки, заполненные всем нулем.Например:
df= pd.DataFrame({"ID": ['1', '2', '3', '4'], "A": [1, 0, 10, 0], "B": [4, 0, 30, 0]})
ID A B
1 1 4
2 0 0
3 10 30
4 0 0
Мой подход заключается в том, чтобы сначала исключить строки с нулевым значением, а затем нормализовать ненулевое подмножество, используя:
df1 = df[df.sum(axis=1) != 0]
df2 = df[df.sum(axis=1) == 0]
sum_row = df1.sum(axis=1)
df1.div(sum_row, axis=0)
, а затем объединить два кадра данных следующим образом:
pd.concat([df1, df2]).reset_index()
Однако я получаю следующую ошибку при применении df1.div(sum_row, axis=0)
ValueError: операнды не могут быть переданы вместе с формами (6,) (2,)
Интересно, как исправить ошибку и существует ли более эффективный подход.Спасибо!
Редактировать: Ожидаемый фрейм данных будет выглядеть следующим образом:
ID A B
1 0.2 0.8
2 0 0
3 0.25 0.75
4 0 0