python-3.x - 删除 n 行并在数据框中迭代 n 次
问题描述
我在 txt 文件中有 3100 万个值。我需要删除 21600 到 61200 之间的值,这是我通过下面的代码完成的,现在我必须使用这个逻辑来删除上述指定值之间的每个 86400 值。这意味着删除 21600+86400 到 61200+86400 之间的值,然后删除 21600+86400+86400 到 61200+86400+86400 等等,应用相同的逻辑直到数据结束。我尝试了很多选项,甚至使用链表,但我无法将其应用于我的大型数据集。该怎么做?
值 1 到 24 的可视化示例,删除从 6 到 `17 的值:
1 2 3 4 5 6 - - - - - - - - - - 17 18 19 20 21 22 23 24
然后应用到下一组遵循以下结构的行(开始 6+24=30 和停止 17+24=41):
25 26 27 28 29 30 - - - - - - - - - - 41 42 43 44 45 46 47 48
依此类推,直到数据结束(删除 30+24 和 41+24 之间的数据以用于下一组)。
为简单起见,我将以下代码限制为前 250000 个值。
import numpy as np
import pandas as pd
sample = np.arange(0, 259201, 1).tolist()
df = pd.DataFrame(sample)
df = df.drop(df.index[21601:61200])
基本上,我需要在下面应用类似这样的东西,但我不知道如何为我的情况做这件事。
for day in reverse(range(366)):
df.drop(df.index[21601+day*86400:61200+day*86400])
解决方案
您可以使用模运算符来执行此操作(%
python 和 pandas 中的符号)。
以下是如何重写最后一段代码:
df[~(df.index.to_series() % 86400).between(21601, 61200)]
我使用了to_series()
因为between()
没有为索引对象定义。
推荐阅读
- google-apps-script - Adding Replace Existing File to GmailToDrive App Script
- php - 如何将两个不同的数组组合成关联数组?
- excel - 如何导航到已打开的 Internet Explorer 窗口?(VBA)
- javascript - 表格在选项卡内容内时拉伸容器
- android - Espresso:测试 TextInputLayout PasswordVisibilityToggle 按钮
- javascript - Chart.js 不使用来自 mySQL 数据库的数据呈现图表
- status - 如何获取 RingCentral 软电话中显示的用户状态?
- javascript - 将新数据行添加到 postgresql 数据库时如何更新前端
- excel - 如果单元格 A1 是某个值,则 B1 在两个值之间是随机的
- gulp - 如何将车把参数从字符串部分转换为整数?