Как применить функцию к указанному c Pandas столбцу, который требует создания нового столбца в Python - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть pandas DataFrame с тремя столбцами:

x = [4,2,4,-4,-80,1]
y = [1,2,3,-10,50,1]
z = [3,4,-1,-3,0,-1]
df = pd.DataFrame({'x': x,'y': y, 'z':z})

И мне нужно создать функцию, которая возвращает максимальное значение, достигнутое накопительной функцией max. Чтобы сделать это, я пытаюсь:

def get_max(DataFrame):
    DataFrame['CumSum'] = DataFrame.cumsum()
    print(max(DataFrame['CumSum']))

Если я применяю эту функцию в первый раз, написав, например:

get_max(df['x'] )

, она работает правильно и возвращает 10, но если я пытаюсь применить его во второй раз для df ['x'], я получаю ошибку: ValueError: Истинное значение Series является неоднозначным. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Не уверен насчет ошибки, я думаю, что возможно, проблема возникает из-за того, что я пытаюсь создать новый столбец, который уже был создан в этой строке:

DataFrame['CumSum'] = DataFrame.cumsum()

Буду признателен, если кто-нибудь скажет мне, есть ли способ решить эту проблему.

Заранее большое спасибо.

1 Ответ

1 голос
/ 21 апреля 2020

Вы не создали новый столбец через эту строку:

DataFrame['CumSum'] = DataFrame.cumsum()

Если вы измените свою функцию на:

def get_max(Series):
    print(max(Series.cumsum()))

Она будет работать на столбце данных, как хочешь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...