首页 > 解决方案 > 一周中的“最大值日”,并计算 Python 最高的每一天

问题描述

我能够获得本周的最高价值。现在,我需要弄清楚它是一周中的哪一天,这样我就可以计算出一周中某一天最高的次数。例如,具有最高值的星期几 Mon:5 Tue:2 Wed:3 Thur:2 Fri:1

This is what my dataframe looked like before I parsed the information that I needed. 
           Date   Weekdays  Week        Open       Close
0    2019-06-26  Wednesday    26  208.279999  208.509995
1    2019-06-27   Thursday    26  208.970001  212.020004
2    2019-06-28     Friday    26  213.000000  213.169998
3    2019-07-01     Monday    27  214.250000  214.619995
4    2019-07-02    Tuesday    27  214.380005  214.539993
..          ...        ...   ...         ...         ...
500  2021-06-21     Monday    25  275.619995  277.100006
501  2021-06-22    Tuesday    25  277.570007  276.920013
502  2021-06-23  Wednesday    25  276.890015  274.660004
503  2021-06-24   Thursday    25  275.000000  275.489990
504  2021-06-25     Friday    25  276.369995  278.380005

[505 rows x 5 columns]

现在我能够获得一周的最高值,但我想获得这一天并计算最高的日子。

#Tally up the highest days of the week at OPEN
new_data.groupby(pd.Grouper('Week')).Open.max()

结果是

Week
26    213.000000
27    215.130005
28    215.210007
29    214.440002
30    208.369995
31    210.000000
32    204.199997
33    214.740005
34    210.050003
35    217.509995
36    222.000000
37    220.539993
38    220.279999
39    214.000000
40    214.300003
41    215.880005
42    216.740005
43    212.429993
44    213.550003
45    222.809998
46    228.500000
47    233.570007
48    233.919998
49    231.190002
50    231.259995
51    227.679993
52    226.860001
1     233.539993
2     234.789993
3     235.220001
4     233.000000
5     236.979996
6     241.429993
7     244.729996
8     248.070007
9     251.080002
10    264.220001
11    260.309998
12    252.750000
13    259.940002
14    264.220001
15    270.470001
16    272.299988
17    276.290009
18    289.970001
19    292.350006
20    290.200012
21    290.190002
22    292.910004
23    292.559998
24    286.660004
25    277.570007
53    230.500000
Name: Open, dtype: float64

标签: python-3.xpandasdataframe

解决方案


我接到你了。我们将 groupby 包装在 df.loc 中,然后选择每个组中 Open 最大值的索引。最后只取工作日的 value_counts。

df.loc[df.groupby(["Week"]).Open.idxmax()].Weekdays.value_counts()

推荐阅读