python - 如果在 24 小时内重复,则保持值(value)

标签 python pandas

<分区>

我正在尝试找出解决我的问题的最佳方法。考虑以下数据集:

enter image description here

我正在寻找一种迭代循环 panda 表的方法,并标记在每个“事件”“日期”的 24 小时内未重复的任何“事件”。如本示例中的“保留”列所示。

在此示例中,“步行”和“跳跃”都用“0”表示,因为它们在 24 小时时间范围内没有重复的“事件”。

我最初的想法是遍历每一行,根据“日期”加上 24 小时提取行,并检查第一次出现的“事件”,但这似乎非常耗费资源,并且很好奇是否有更简单的方法。

最佳答案

这是一个有趣的问题。除非我误解了什么,否则我怀疑你的例子是不正确的。例如,事件的每次最后出现都应为 0,因为根据定义它是最后一次出现,因此之后不会重复。

也就是说,这很容易。您可以按日期排序、按事件分组并计算连续行之间的时间差。最后,应用一个阈值(此处 < 1 天)。

假设这个输入:

  event                date
0     R 2000-01-01 11:40:00
1     R 2000-01-01 12:40:00
2     W 2000-01-01 12:40:00
3     S 2000-01-03 11:00:00
4     H 2000-01-03 12:00:00
5     S 2000-01-03 19:00:00
6     H 2000-01-04 13:00:00
7     W 2000-01-03 09:00:00
8     W 2000-01-03 10:00:00
9     H 2000-01-04 14:00:00
df = df.sort_values(by='date')
df['keep'] = (df.groupby('event')['date']
               .apply(lambda d: d.diff().shift(-1) < pd.Timedelta('1D'))
               .astype(int)
             )

输出:

  event                date  keep
0     R 2000-01-01 11:40:00     1
1     R 2000-01-01 12:40:00     0
2     W 2000-01-01 12:40:00     0
3     S 2000-01-03 11:00:00     1
4     H 2000-01-03 12:00:00     0
5     S 2000-01-03 19:00:00     0
6     H 2000-01-04 13:00:00     1
7     W 2000-01-03 09:00:00     1
8     W 2000-01-03 10:00:00     0
9     H 2000-01-04 14:00:00     0

关于python - 如果在 24 小时内重复,则保持值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68499149/

相关文章:

python - 最近值迭代

python - 如何使用 python-geojson 从 python 转储格式化 geoJSON 文件?

python - 在Python/pandas中合并不同长度的数据帧

python - 是否可以使用 tqdm 进行 pandas 合并操作?

python - pandas pct_change() 函数返回错误值

python - 在 RandomForestRegressor 中得到连续不支持的错误

python - 无法安装模块 python pip

python - 如何使用 matplotlib 在绘图的 x 轴上同时显示日期和时间

python - 错误 : unhashable type: 'list' . 使用 df.groupby.apply 时

python - 我在 virtualenv 中安装后无法导入 MySQLdb