python - 以选定的时间间隔获取熊猫项目
问题描述
我试图找到一种更快的方法来选择不同时间间隔的日期。目前,我正在遍历数据框,然后使用iloc
. 不过,性能正在造成瓶颈。文件很大,而且有很多,所以欢迎任何帮助。
#example
df = pd.DataFrame(pd.date_range(start='01/01/1980', end='01/01/2020'), columns=['DT'])
n = 5
spans = []
max_len = len(df) - n
for k in df.index:
if k < max_len:
spans.append([df.iloc[k].DT, df.iloc[k + n].DT])
有没有“更好”的方式来做到这一点,即更快。谢谢。
解决方案
也许您可以DT
按所需数量移动列:
df = pd.DataFrame(pd.date_range(start='01/01/2018', end='01/01/2020'), columns=['DT'])
df['DT2'] = df['DT'].shift(-5)
print(df[df['DT2'].notna()])
印刷:
DT DT2
0 2018-01-01 2018-01-06
1 2018-01-02 2018-01-07
2 2018-01-03 2018-01-08
3 2018-01-04 2018-01-09
4 2018-01-05 2018-01-10
.. ... ...
721 2019-12-23 2019-12-28
722 2019-12-24 2019-12-29
723 2019-12-25 2019-12-30
724 2019-12-26 2019-12-31
725 2019-12-27 2020-01-01
[726 rows x 2 columns]
推荐阅读
- c# - C#如何找到随机数数组中最小数字的出现次数?
- gstreamer - 是否可以使用 GStreamer 管道构建简单的音高标签系统?
- asynchronous - 如何仅在从漫长的过程中填充对象后才返回对象集合
- json - 如何解析来自 API 的单值 JSON 响应?
- python - pyspark 数据框将 json 列旋转到新列
- vue.js - 使用 Apollo 和 GraphQL 缓存而不是 Vuex?
- node.js - Express:PayloadTooLargeError 试图读取包含大 JSON 的 POST 正文,尽管设置了限制
- typescript - 从 WebView 访问 VS Code api
- python - 更正 re.compile 以消除句点,但为逗号添加空格
- python - 熊猫:在同一图中绘制线和条形图_使用自定义索引_