小编mar*_*pis的帖子

选择每个日期的最后一个时间戳

一个数据帧每天只包含几个时间戳,我需要为每个日期选择最新的一个(不是值,时间戳本身)。df 看起来像这样:

                               A      B      C
2016-12-05 12:00:00+00:00  126.0   15.0  38.54
2016-12-05 16:00:00+00:00  131.0   20.0  42.33
2016-12-14 05:00:00+00:00  129.0   18.0  43.24
2016-12-15 03:00:00+00:00  117.0   22.0  33.70
2016-12-15 04:00:00+00:00  140.0   23.0  34.81
2016-12-16 03:00:00+00:00  120.0   21.0  32.24
2016-12-16 04:00:00+00:00  142.0   22.0  35.20
Run Code Online (Sandbox Code Playgroud)

我设法通过定义以下函数来实现我所需要的:

def find_last_h(df,column):
    newindex = []
    df2 = df.resample('d').last().dropna()
    for x in df2[column].values:
        newindex.append(df[df[column]==x].index.values[0])
    return pd.DatetimeIndex(newindex)
Run Code Online (Sandbox Code Playgroud)

我用它指定要用作过滤器的列的值来获取所需的时间戳。这里的问题是在非唯一值的情况下,这可能无法按预期工作。

另一种使用方法是:

  grouped = df.groupby([df.index.day,df.index.hour])
  grouped.groupby(level=0).last()
Run Code Online (Sandbox Code Playgroud)

然后重建时间戳,但它更加冗长。什么是聪明的方法?

python multidimensional-array pandas

3
推荐指数
1
解决办法
1561
查看次数

标签 统计

multidimensional-array ×1

pandas ×1

python ×1