【问题标题】:max value of a dataframe column so far [duplicate]到目前为止数据框列的最大值[重复]
【发布时间】:2018-10-14 09:42:51
【问题描述】:

您好有以下数据框(df)

       temp
0      10
1      23
2      12
5      24  

而我正在努力实现:

       temp     max_so_far
0      10      10
1      23      23
2      12      23
5      24      24

我正在尝试使用:

df['max_so_far'] = df.temp.rolling(window= df.index).max
df['max_so_far'] = df.temp.rolling(window= df.index.astype(int)).max

但是我总是得到窗口必须是整数的错误。任何建议如何解决这个问题

谢谢

【问题讨论】:

  • df.index 为您提供一系列索引。不是一个单一的值。 Rolling 期望它的窗口是一个常量整数。

标签: python pandas dataframe


【解决方案1】:

你也可以用pd.Series.cummax()代替滚动窗口:

print(df.temp.cummax())
0    10
1    23
2    23
5    24

【讨论】:

    【解决方案2】:

    试试2,然后加fillna

    df['max_so_far'] = df.temp.rolling(window= 2).max().fillna(df.temp[0])
    

    除了 Jan 的答案,分配:

    df['max_so_far']=df.temp.cummax()
    

    两种情况:

    print(df)
    

    返回:

       temp  max_so_far
    0    10        10.0
    1    23        23.0
    2    12        23.0
    5    24        24.0
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多