【问题标题】:Get current max value of column and input into new column using pandas使用 pandas 获取列的当前最大值并输入到新列中
【发布时间】:2017-10-11 03:35:26
【问题描述】:

我正在尝试获取 pandas 中列的当前最大值。例如,我想获取列 [ask] 并创建一个新列 [high_of_day] 以显示询问列的最大值到目前为止,并不断重复[high_of_day] 列中的最大值,直到 ask 列中出现更大的新值。

数据输入

data = [['9:00',1,0],['10:00',2,0],['11:00',3,0],['12:00',4,0],['13:00',2,0],['14:00',5,0]]
df3 = pd.DataFrame(data, columns=['DateTime','Ask','High_of_Day'],dtype=float)

输出

  DateTime  Ask  High_of_Day
0     9:00  1.0          0.0
1    10:00  2.0          0.0
2    11:00  3.0          0.0
3    12:00  4.0          0.0
4    13:00  2.0          0.0
5    14:00  5.0          0.0  

我尝试过使用各种循环,但似乎无法正确使用。

我想要得到的结果是:

  DateTime  Ask  High_of_Day
0     9:00  1.0          1.0
1    10:00  2.0          2.0
2    11:00  3.0          3.0
3    12:00  4.0          4.0
4    13:00  2.0          4.0
5    14:00  5.0          5.0

非常感谢任何有关获得正确算法的帮助,谢谢!

【问题讨论】:

    标签: python pandas dataframe max cumulative-sum


    【解决方案1】:

    选项 1
    pd.Series.cummax

    s = df3.Ask.cummax()
    print(s)
    0    1.0
    1    2.0
    2    3.0
    3    4.0
    4    4.0
    5    5.0
    Name: Ask, dtype: float64
    
    df3['High_of_Day'] = s
    print(df3)
      DateTime  Ask  High_of_Day
    0     9:00  1.0          1.0
    1    10:00  2.0          2.0
    2    11:00  3.0          3.0
    3    12:00  4.0          4.0
    4    13:00  2.0          4.0
    5    14:00  5.0          5.0
    

    选项 2
    np.maximum.accumulate

    df3['High_of_Day'] = np.maximum.accumulate(df3.Ask)
    print(df3)
      DateTime  Ask  High_of_Day
    0     9:00  1.0          1.0
    1    10:00  2.0          2.0
    2    11:00  3.0          3.0
    3    12:00  4.0          4.0
    4    13:00  2.0          4.0
    5    14:00  5.0          5.0
    

    【讨论】:

    • 谢谢!效果很好,感谢您的帮助
    猜你喜欢
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2016-12-30
    • 2023-02-23
    • 2014-11-18
    • 2015-08-20
    相关资源
    最近更新 更多