python - 获取熊猫时间序列的时间跨度
问题描述
我正在尝试获取每组条目(时间序列)的时间跨度。条目没有排序。在 pandas 中是否有比使用 max-min 更有效的方法?我已经尝试了 timedelta 和 period 函数,但它们没有返回我需要的东西。
import pandas as pd
tt = pd.DataFrame([
[1,'2018-3-1' ],
[1,'2018-2-3' ],
[1,'2018-5-2' ],
[1,'2018-4-5' ],
[2,'2017-3-10' ],
[2,'2017-1-12' ],
[2,'2017-5-15' ],
[2,'2017-2-14' ]
],columns=['group','entry'])
tt.entry = pd.to_datetime(tt.entry)
tt.groupby('group')['entry'].apply(lambda x: max(x)-min(x))
# group
# 1 88 days
# 2 123 days
# Name: entry, dtype: timedelta64[ns]
解决方案
ptp
这是一种方法numpy
tt.groupby('group')['entry'].apply(np.ptp)
Out[773]:
group
1 88 days
2 123 days
Name: entry, dtype: timedelta64[ns]
推荐阅读
- python - 我们是否需要手动缓存模式注册表?
- c - 将 8 加到输入的数字上,然后除以 3。现在,该数字的模数取 5,然后将结果值乘以 5
- javascript - Highchart按值更改列颜色
- google-app-maker - Google Appmaker MAP api 可拖动标记并保存新坐标
- angularjs - Webpack 4 加载器实现了角度模板缓存,因此可以将 bundle 视为完整的带有视图的库
- java - 在 Java 中杀死或销毁或退出线程
- c++ - C++ & Clion & GTK3 & glade 信号不工作
- c# - 我如何在 Selenium 和 C#.Net 中使用 Headless Browser
- elixir - 您如何从 Phoenix 控制器中与 Elixir 代理进行通信?
- python - 如何将 .iloc 与 .isnull() 一起使用