Значение столбца данных с использованием функции max () - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь создать столбец с именем «Порог», в котором значения определяются расчетом df['column']/30**0.5, но я хочу, чтобы этот столбец имел минимальное значение 0,2. Поэтому, если расчет меньше 0,2, я хочу, чтобы значение столбца было 0,2.

Например: df ['column2'] = (df['column']/30)**0.5 или 0,2 (какое число больше).

Это то, что у меня сейчас:

df['Historical_MovingAverage_15'] = df['Historical_Average'].rolling(window=15).mean()
df['Threshold'] = max((((df['Historical_MovingAverage_15'])/30)**0.5), 0.2)

Это дает мне эту ошибку:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 Ответ

4 голосов
/ 30 апреля 2020

Использование numpy.maximum:

df['Threshold'] = np.maximum((((df['Historical_MovingAverage_15'])/30)**0.5), 0.2)

Или Series.clip с параметром lower:

df['Threshold'] = (((df['Historical_MovingAverage_15'])/30)**0.5).clip(lower=0.2)

Образец :

df = pd.DataFrame({'Historical_MovingAverage_15':[.21,2,3]})
df['Threshold'] = np.maximum((((df['Historical_MovingAverage_15'])/30)**0.5), 0.2)
print (df)
   Historical_MovingAverage_15  Threshold
0                         0.21   0.200000
1                         2.00   0.258199
2                         3.00   0.316228

Деталь :

print ((((df['Historical_MovingAverage_15'])/30)**0.5))
0    0.083666
1    0.258199
2    0.316228
Name: Historical_MovingAverage_15, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...