Есть ли способ (более эффективный, чем использование цикла for), чтобы заменить все нули в DataFrame Pandas с максимальным значением в соответствующей строке.Заменить нули в DataFrame с максимальным значением в строке
4
A
ответ
2
Я думаю, что это то, что вы ищете:
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 0], 'b': [3, 0, 10], 'c':[0, 5, 34]})
a b c
0 1 3 0
1 2 0 5
2 0 10 34
Вы можете использовать apply
, перебрать все строки и заменить 0 на максимальном числе строки с помощью функции replace
, которая дает вам ожидаемую выход:
df.apply(lambda row: row.replace(0, max(row)), axis=1)
a b c
0 1 3 3
1 2 5 5
2 34 10 34
Если вы хотите, чтобы заменить NaN
- который, казалось, фактическая цель в соответствии с вашим комментарием - you can use
df = pd.DataFrame({'a': [1, 2, np.nan], 'b': [3, np.nan, 10], 'c':[np.nan, 5, 34]})
a b c
0 1.0 3.0 NaN
1 2.0 NaN 5.0
2 NaN 10.0 34.0
df.T.fillna(df.max(axis=1)).T
получая
a b c
0 1.0 3.0 3.0
1 2.0 5.0 5.0
2 34.0 10.0 34.0
, которые могут быть более эффективными, чем
df.apply(lambda row: row.fillna(row.max()), axis=1)
Пожалуйста, обратите внимание, что
df.apply(lambda row: row.fillna(max(row)), axis=1)
не работает в каждом конкретном случае, как описано here.
Смежные вопросы
- 1. PHP Заменить номер в строке с максимальным значением
- 2. панды заменить нули с предыдущим ненулевым значением
- 3. Как заменить числа на нули в DataFrame?
- 4. Как выбрать строки в Dataframe с максимальным значением в столбце
- 5. Извлечение строки с максимальным значением в группе панд dataframe
- 6. Попытка найти строку, связанную с максимальным значением в dataframe R
- 7. Заменить ведущие нули в таймкоде строке
- 8. R заменить нули в dataframe с последнего ненулевого значения
- 9. заменить нули в Numpy массива с медианным значением
- 10. Вступление в строке с максимальным значением через jointable
- 11. mysql выбрать строки с максимальным максимальным значением
- 12. Pandas dataframe: return row И столбец с максимальным значением (-ами)
- 13. Заменить несколько строк со значением в строке.
- 14. Заполняющие нули в строке
- 15. найти запись с максимальным значением в python
- 16. Выбор строки с максимальным значением в диапазоне
- 17. найти запись с максимальным значением в SQL
- 18. Поиск элемента в списке с максимальным значением
- 19. Найти записи с максимальным значением в каждом
- 20. группы MySQL с максимальным значением в столбце
- 21. Извлечь строку с максимальным значением в DataFrameGroupBy
- 22. Выбор записей с максимальным значением в группе
- 23. Выберите опцию с максимальным значением?
- 24. Пара с максимальным значением И
- 25. Выбор переключателя с максимальным значением
- 26. Кнопки JS с максимальным значением
- 27. Выберите строку с максимальным значением
- 28. Как выбрать с максимальным значением
- 29. SQL QUERY заменить NULL значение в строке с другим значением
- 30. Как заменить значение в строке с десятичным значением в java
Что вы подразумеваете под "более эффективным"? Сложность времени, которую вы пытаетесь сделать, не может быть улучшена из базовой реализации (цикл через каждую строку, вычислять максимальный, заполнять нули с max), так как вам нужно смотреть на каждый элемент хотя бы один раз. – James
Как правило, с помощью Pandas вы можете выполнять операции с полным кадром сразу с помощью встроенных оптимизированных функций, которые быстрее, чем цикл через кадр самостоятельно. Например, df.mul (df2) быстрее, чем цикл через кадры одновременно и выполняет умножение в python. Подобно тому, как работает numpy. – rhaskett