gpt4 book ai didi

python - 删除 Pandas 数据框行中的最高值和最低值

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:46 25 4
gpt4 key购买 nike

我有一个数据框,其中包含一篮子 100 只股票的每小时 yield 。我目前计算的一件事是每小时每只股票的平均返回,然后采用该数字的滚动 MA。所以我对每一行求和,然后除以 100,然后再进行滚动平均。假设 df 看起来像这样:

Time   Stock 1   Stock 2   Stock 3   Stock 4 ... Stock 100
09:00 0.25 0.14 0.07 0.31 0.12
10:00 0.05 0.01 -0.03 0.18 0.09
11:00 -0.11 -0.17 0.01 -0.04 -0.13
12:00 -0.22 -0.31 -0.19 -0.34 -0.16
13:00 0.02 0.05 0.09 0.11 0.08

那么我要计算每一行的平均值的方法是:

df['Average'] = (df.sum(axis=1)/100)

所以我没有这个问题,但是我现在要做的是,去掉每一行中表现最好和最低的 5 只股票,然后计算该行的总和,这次除以 90。

如果它只是一列,我会对其进行排序,然后对其进行切片,以去除顶部和底部的 5 个。但是,考虑到我在行上进行这些计算,我不知道我是否可以使用相同的原理。

如有任何帮助,我们将不胜感激。

最佳答案

首先按 numpy.sort 对每行的值进行排序, 选择所有没有第一个和最后一个 5 和最后计数的列 mean 每行:

np.random.seed(2019)

df = pd.DataFrame(np.random.randint(10, size=(5, 12)))
print (df)
0 1 2 3 4 5 6 7 8 9 10 11
0 8 2 5 8 6 8 0 0 7 8 5 3
1 0 2 5 7 8 5 4 0 1 6 0 2
2 6 6 3 1 3 5 0 2 6 1 8 2
3 9 8 3 7 7 7 0 3 4 8 1 0
4 6 1 8 2 3 0 9 2 9 8 5 5

print (np.sort(df.values, axis=1))
[[0 0 2 3 5 5 6 7 8 8 8 8]
[0 0 0 1 2 2 4 5 5 6 7 8]
[0 1 1 2 2 3 3 5 6 6 6 8]
[0 0 1 3 3 4 7 7 7 8 8 9]
[0 1 2 2 3 5 5 6 8 8 9 9]]

print (np.sort(df.values, axis=1)[:, 5:-5])
[[5 6]
[2 4]
[3 3]
[4 7]
[5 5]]

df['average'] = np.mean(np.sort(df.values, axis=1)[:, 5:-5], axis=1)
print (df)
0 1 2 3 4 5 ... 7 8 9 10 11 average
0 8 2 5 8 6 8 ... 0 7 8 5 3 5.5
1 0 2 5 7 8 5 ... 0 1 6 0 2 3.0
2 6 6 3 1 3 5 ... 2 6 1 8 2 3.0
3 9 8 3 7 7 7 ... 3 4 8 1 0 5.5
4 6 1 8 2 3 0 ... 2 9 8 5 5 5.0

[5 rows x 13 columns]

关于python - 删除 Pandas 数据框行中的最高值和最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54615793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com