Панда условное среднее столбца, где значения больше или меньше нуля - PullRequest
0 голосов
/ 22 сентября 2018

Я хочу вычислить условное среднее для столбца: если значения элементов строки> 0, то рассчитать среднее для всех таких элементов, а если <0, вычислить среднее их и сохранить в avgGain и avgLoss. </p>

Входные данные:

ProfitLoss
    -8.000
    14.400
    13.150
     3.050
    -8.000
    -8.000
     3.425
     7.350
    -8.000
    -8.000
     0.000

Выходные данные:

avgGain     avgLoss
 8.275      -8.000

Все эти вычисления должны выполняться с использованием функций pandas apply или aggregate в одном операторе.

Спасибо

1 Ответ

0 голосов
/ 22 сентября 2018

IIUC, может сделать:

# Setup (for reproducibility)
import pandas as pd

data = [-8.000,
    14.400,
    13.150,
     3.050,
    -8.000,
    -8.000,
     3.425,
     7.350,
    -8.000,
    -8.000,
     0.000]
df = pd.DataFrame(data, columns=["ProfitLoss"])

# Calculate the respective means (vectorized)
avgGain = df[df['ProfitLoss'] > 0].mean().values[0]
avgLoss = df[df['ProfitLoss'] < 0].mean().values[0]

# Print outputs to console
print("avgGain:", avgGain)
print("avgLoss:", avgLoss)

выходы:

Matthews-MacBook-Pro:stackoverflow matt$ python test.py
avgGain: 8.275
avgLoss: -8.0

по желанию

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