【问题标题】:Pandas dataframe - find last timestamp with valid valuesPandas 数据框 - 查找具有有效值的最后一个时间戳
【发布时间】:2022-08-19 03:25:32
【问题描述】:

我有一个熊猫数据框,其中索引是时间戳,并且我有一个包含每个时间戳的值的列,如下所示:

Values
timestamp
2022-03-17 13:21:00+00:00 15.2
2022-03-22 13:24:00+00:00 17.8
2022-03-27 13:27:00+00:00 NaN
2022-03-30 13:30:00+00:00 NaN

在值列中,有时我得到一个数字,有时我得到 NaN。

我要做的是获取一个包含上周值的新数据框,为此我正在使用下一段代码:

dataW=data.loc[(pd.Timestamp.utcnow()-pd.Timedelta(days=7)):(pd.Timestamp.utcnow())]

哪个工作正常,除非巧合的是上周的数据都是 NaN:然后我得到一个错误。 为了解决这个问题,我希望 dataW 成为一个数据框,其中包含从最后一天开始的过去 7 天的数据,其中值不是 NaN。这意味着,在我作为示例编写的数据框中,而不是获取

2022-03-30 13:30:00+00:00 - 7 days

我想获取以下数据

2022-03-22 13:24:00+00:00 - 7 days

有人知道我该怎么做吗?

非常感谢您,

    标签: python pandas dataframe timestamp


    【解决方案1】:

    您可以使用last_valid_index

    last = data['Values'].last_valid_index()
    # or to consider all columns
    # last = data.last_valid_index()
    
    data.loc[last-pd.Timedelta(days=7):last]
    

    输出:

                               Values
    timestamp                        
    2022-03-17 13:21:00+00:00    15.2
    2022-03-22 13:24:00+00:00    17.8
    

    last: Timestamp('2022-03-22 13:24:00+0000', tz='UTC')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2019-02-08
      • 2020-11-06
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多