python - 如何获取idmax-admin在时序数据中的分布?

标签 python python-2.7 pandas time-series dataframe

这是我的数据的简化外观:

                        Open     High      Low    Close
2005-09-06 09:00:00  1234.25  1234.50  1234.00  1234.25
2005-09-06 12:00:00  1234.50  1234.75  1234.25  1234.50
2005-09-06 16:00:00  1234.50  1234.50  1234.25  1234.50
2005-09-07 09:00:00  1234.25  1234.50  1234.00  1234.25
2005-09-07 12:00:00  1234.25  1234.50  1234.25  1234.50
2005-09-07 16:00:00  1234.25  1234.75  1234.25  1234.25
2005-09-08 09:00:00  1234.25  1234.25  1234.00  1234.25
2005-09-08 12:00:00  1234.25  1234.25  1233.75  1234.25
2005-09-08 16:00:00  1234.25  1234.50  1234.00  1234.00

我想获取每一天的最大值和最小值的小时数。最大值是“高”列的最大值,最小值是“低”列的最小值。在此示例中,输出将是:

           Max_Time  Min_Time    
2005-09-06 12:00:00  09:00:00
2005-09-07 16:00:00  09:00:00
2005-09-08 16:00:00  12:00:00

由于这个总结会很长,所以总结它以获得每个时间戳的分布很有用,但是使用每小时的 bin,所以它看起来像:

          Max  Min
09:00:00   0    2  
12:00:00   1    1
16:00:00   2    0

我该怎么做?

最佳答案

假设索引已经是 DatetimeIndex,我会尝试类似的方法:

>>> g = df.groupby(df.index.date) # groupby date
>>> max_min = pd.DataFrame({'Max_Time': g['High'].idxmax().dt.time, 
                            'Min_Time': g['Low'].idxmin().dt.time})
>>> max_min
            Max_Time  Min_Time
2005-09-06  12:00:00  09:00:00
2005-09-07  16:00:00  09:00:00
2005-09-08  16:00:00  12:00:00

(如果你只想要小时,而不是完整的时间,你可以使用 dt.hour。)

要获取每列中时间的单独计数,您可以调用 pd.value_counts:

>>> pd.DataFrame({'Max': max_min.Max_Time.value_counts(), 
                  'Min': max_min.Min_Time.value_counts()})
          Max  Min
09:00:00  NaN    2
12:00:00    1    1
16:00:00    2  NaN

关于python - 如何获取idmax-admin在时序数据中的分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29569365/

相关文章:

python - 检测阵列的抛物面形状部分

python - 如何在 Pygame 中创建暂停按钮?

javascript - 如何使用命令行工具从 PDF 文件中提取 JavaScript?

python - 根据多个条件替换 groupby 中的值

python - 为什么描述符(在Python中)不能插入(放置)到已经初始化的对象中?

python 3 : How to call function from another file and pass arguments to that function ?

python - 参数值列表的 Lambda 函数

python - 导入模块 - 多少才算太多?

python - Pandas |以逗号分隔的组的所有值进行分组

python - Pandas 切片列的每个行项目