Как передать метод панды в качестве параметра?

По моему пониманию, присваивание s = "Hello"; должен только присваивать значение «Hello» для s, но операция не должна возвращать какое-либо значение.

Ваше понимание на 100% неверно. Можете ли вы объяснить, почему вы верите в эту ложную вещь?

Какова аргументация, позволяющая присваивать операторам присваивания значение?

Во-первых, назначение не дают значения. Выражение присваивания создает значение. Выражение присваивания является юридическим заявлением; существует только несколько выражений, которые являются юридическими утверждениями в C #: примеры построения экземпляра, приращения, декремента, вызова и присваивания могут использоваться там, где ожидается утверждение.

В C # существует только один вид выражения который не производит какую-то ценность, а именно, обращение к тому, что набирается как возвращающее пустоту. Каждое другое выражение выражает значение или переменную или ссылку или доступ к свойствам или доступ к событиям и т. Д.

Обратите внимание, что все выражения, которые являются законными как утверждения, являются полезными для их побочных эффектов . Это ключевое понимание здесь, и я думаю, возможно, причиной вашей интуиции, что назначения должны быть утверждениями, а не выражениями. В идеале у нас будет ровно один побочный эффект для каждого утверждения и никаких побочных эффектов в выражении. Он является немного странным, что побочный код может использоваться в контексте выражения вообще.

Обоснование возможности этой функции состоит в том, что (1) это часто удобно и (2) является идиоматическим в языках типа C.

Можно заметить, что вопрос был умолял: почему этот идиоматический язык на языках C-типа?

Вы должны были бы спросить Денниса Ритчи, но я предполагаю, что задание почти всегда оставляет значение, которое было просто присвоенный в регистре. C - это очень «близкий к машине» вид языка. Это кажется правдоподобным и в соответствии с дизайном C, что есть языковая функция, которая в основном означает «продолжайте использовать значение, которое я только что назначил». Очень легко написать генератор кода для этой функции; вы просто продолжаете использовать регистр, который сохранил значение, которое было назначено.

0
задан SarahD 18 January 2019 в 11:18
поделиться

1 ответ

Вы можете сделать это с помощью getattr:

def my_func(df, pandas_stat):
    for col in df.columns:
        print(getattr(df[col], pandas_stat)())  # the empty parenthesis
                                                       # are required to call
                                                       # the method

df_max = my_func(df, "max")
0
ответ дан Bubastis 18 January 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: