python - 如果它在下一个 python 的一分钟内,则删除行
问题描述
我有这个数据框
data = {'Date': [np.datetime64('2005-02-25 01:30:10'), np.datetime64('2005-02-25 01:31:10'),np.datetime64('2005-02-25 02:36:10'),
np.datetime64('2005-02-25 02:45:10'), np.datetime64('2005-02-25 02:45:50'),np.datetime64('2005-02-25 03:54:20'),
np.datetime64('2005-02-25 03:55:10'),np.datetime64('2005-02-25 05:30:10'), np.datetime64('2005-02-25 06:30:10'),
np.datetime64('2005-02-25 06:30:30')],
'Value':[1,4,6,7,3,6,7,8,3,2]}
df = pd.DataFrame(data)
Date Value
0 2005-02-25 01:30:10 1
1 2005-02-25 01:31:10 4
2 2005-02-25 02:36:10 6
3 2005-02-25 02:45:10 7
4 2005-02-25 02:45:50 3
5 2005-02-25 03:54:20 6
6 2005-02-25 03:55:10 7
7 2005-02-25 05:30:10 8
8 2005-02-25 06:30:10 3
9 2005-02-25 06:30:30 2
当下一行在它的一分钟内时,我将如何删除第一行,而不是手动进行。
所以我的预期输出是:
Date Value
1 2005-02-25 01:31:10 4
2 2005-02-25 02:36:10 6
4 2005-02-25 02:45:50 3
6 2005-02-25 03:55:10 7
7 2005-02-25 05:30:10 8
9 2005-02-25 06:30:30 2
请让我知道如何做到这一点
解决方案
如果更大的相似值或缺失值(匹配最后一个值) ,则使用Series.shift
wth 减法、然后Series.dt.total_seconds
除以和最后一个过滤器:DataFrame.floordiv
1
boolean indexing
s = df['Date'].shift(-1).sub(df['Date']).dt.total_seconds().floordiv(60)
df = df[s.isna() | s.gt(1)]
print (df)
Date Value
1 2005-02-25 01:31:10 4
2 2005-02-25 02:36:10 6
4 2005-02-25 02:45:50 3
6 2005-02-25 03:55:10 7
7 2005-02-25 05:30:10 8
9 2005-02-25 06:30:30 2
推荐阅读
- r - R:将函数列表传递给另一个函数
- r - R中合并的奇怪问题,产生NA
- python - 如果找不到模块本身,则在 imp.reload 上捕获 FileNotFoundError
- vue.js - scrollIntoView() Safari Vue JS 修复
- javascript - 如果字符串不匹配条件,如何从数组中删除元素?
- angular - *ngFor 数组中的空字符串会导致奇怪的放置问题(与数组中的非空字符串相反)
- apache-spark - 从 Spark 写入多个 Kafka 分区
- r - 是否可以使用输入变量选择绘图的位置?
- google-sheets - 谷歌助手输入仅限于从 excel 中选择的下拉选项
- python - 采用可变输入张量列表的自定义 Tensorflow 操作