【问题标题】:Max and min values in pandas熊猫的最大值和最小值
【发布时间】:2020-04-28 20:58:05
【问题描述】:

我有以下数据:

High    Low Open    Close   Volume  Adj Close
Date                        
1999-12-31  1472.420044 1458.189941 1464.469971 1469.250000 374050000   1469.250000
2000-01-03  1478.000000 1438.359985 1469.250000 1455.219971 931800000   1455.219971
2000-01-04  1455.219971 1397.430054 1455.219971 1399.420044 1009000000  1399.420044
2000-01-05  1413.270020 1377.680054 1399.420044 1402.109985 1085500000  1402.109985
2000-01-06  1411.900024 1392.099976 1402.109985 1403.449951 1092300000  1403.449951
... ... ... ... ... ... ...
2020-01-06  3246.840088 3214.639893 3217.550049 3246.280029 3674070000  3246.280029
2020-01-07  3244.909912 3232.429932 3241.860107 3237.179932 3420380000  3237.179932
2020-01-08  3267.070068 3236.669922 3238.590088 3253.050049 3720890000  3253.050049
2020-01-09  3275.580078 3263.669922 3266.030029 3274.699951 3638390000  3274.699951
2020-01-10  3282.989990 3268.010010 3281.810059 3273.739990 920449258   3273.739990
5039 rows × 6 columns

由于这是每日数据,因此将其重新采样为每周数据,以找到 52 周的高点和低点。

weekly_high = data.High.groupby(pd.Grouper(freq='M')).tail(52)
weekly_low = data.Low.groupby(pd.Grouper(freq='M')).tail(52)

问题来了:

weekly_high.max()

产量:3282.989990234375

weekly_low.min()

产量:666.7899780273438

这些值是有问题的,因为 3283.0 很高,所以我为什么要进入 deimals?其次,每周低点是 666,我知道这是不正确的。我该如何解决这个问题?

【问题讨论】:

  • 您正在根据最后 52 行计算最大值和最小值
  • 我没听懂你想说什么
  • 对不起。最小值和最大值是否可能不是最后 52 行的一部分?当您创建 weekly_highweekly_low 时,您只占用最后 52 行,因为您有 .tail(52)。如果您要查找的最小值和最大值在这些行之外,那么当您查找最后 52 行的最大值时,您肯定不会找到它们。
  • 你是对的!我猜 .tail(52) 只是显示给你,实际上并没有切片。长度为Length: 5039

标签: python-3.x pandas max min


【解决方案1】:

您好,您可以尝试以下代码:

data['52weekhigh'] = data.High.rolling(252).max()
data['52weeklow'] = data.Low.rolling(252).min()

这使您可以避免每月重新采样,并为您提供 52 周的滚动最高点(52 周 == 252 个交易日)如果您需要任何进一步的说明,请告诉我。

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多