值大于或小于零的列的熊猫条件均值

时间:2018-09-22 11:09:03

标签: python pandas

我想计算一列的条件均值: 如果行元素的值> 0,则计算所有此类元素的平均值;如果<0,则计算这些元素的平均值,并将其存储在avgGain和avgLoss中。

输入:

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或聚合函数进行。

谢谢

1 个答案:

答案 0 :(得分:1)

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

根据需要