Основы использования Pandas , где с Callables кажется простым.
df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D'])
df["test"] = range(1,9)
def MyBool(x):
print(1)
return ( x > 0 )
def MyFunc(x1):
print(1)
return x1['A']
df.where(
cond = lambda x: MyBool(x),
other = lambda x: MyFunc(x) ,
)
< /code>
В приведенном выше коде я заменяю значения всех столбцов значением столбца A всякий раз, когда значение COL меньше 0. Примечание, я знаю, что мне не нужно Для использования Callables для этого простого примера. < /p>
На основании моего анализа это то, что происходит под капотом. Аргумент - сам DF. Это возвращает 8x1 df (= a) < /p>
Во -вторых, оценивается Mybool, который возвращает Boolean df. < /P>
(не уверен в Этот последний шаг) Для всех записей (i, j), где Mybool вернул false, значение IT ряд вывода MyFunc используется для замены текущего значения DF.
Это приводит меня к моему вопросу < /strong>: как это распространяется на случаи, когда MyFunc возвращает DataFrame с несколькими столбцами и рядами? Как функция определяет, какие записи необходимо заменить, а с какими значениями? Код, который я предоставил ниже, работает, но я не совсем понимаю, как он определяет, какие записи должны быть заменены, а с какими значениями. DataFrame. Если предыдущая логика, которую я объяснил, была правильной, то разве она не должна заменить каждую ложную запись на DataFrame? Действительно, если бы это было так, полученное в результате данные о данных должны быть больше, чем входной df. < /P>
Я читал документацию и играл с разными примерами, но не могу понять это . < /p>
def MyBool(x):
output = x.test != 5
return output
def MyFunc(x1):
x1.loc[ x1.test == 5, ["B", "C"] ] /= 2
return x1
df.where(
cond = lambda x: MyBool(x),
other = lambda x: MyFunc(x.copy()),
axis = 0
)
Подробнее здесь: https://stackoverflow.com/questions/794 ... parameters
Как Pd.where работает с Callables в качестве параметров? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Typling.union позволяет создавать Callables в качестве аргументов типа
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-