我想计算一列的条件均值: 如果行元素的值> 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或聚合函数进行。
谢谢
答案 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
根据需要