我有一个包含数千条记录的大表(可能有 3,000 到 75,000 条记录),我将所有数字 ID 放入排序列表中。 我想一次有序地处理一组 1000 个 ID。 我如何优雅地获取前 1000 个和“标签”,设置为“223344 到 337788”(字典在这里有意义吗,或者只是列表捕获中的第一个/最后一个项目......以跟踪处理的集合) )? 依此类推,直到所有 ID 都在 1000 个 ID 的集合中(最后一个是余数)?我对熊猫一无所知,但看到过一个与熊猫有些类似的问题——这在这里有意义吗? 对于这个可能笨重的问题表示歉意 - 在我的头脑中仍然有点笨拙,可以在这里使用一个共鸣板。
可以使用简单的列表切片和循环来实现这一点。以下是如何操作:
def process_in_chunks(ids, chunk_size=1000):
"""
将 ID 列表分成块并处理每个块。
Args:
ids: 要处理的 ID 列表。
chunk_size: 每个块的大小。
"""
for i in range(0, len(ids), chunk_size):
chunk = ids[i:i + chunk_size]
label = f"{chunk[0]} 到 {chunk[-1]}"
# 处理当前块
print(f"正在处理标签为“{label}”的块:{chunk}")
# 示例用法
ids = list(range(5234)) # 示例 ID 列表
process_in_chunks(ids)
此代码执行以下操作:
-
定义函数
process_in_chunks
: -
接收 ID 列表 (
ids
) 和可选的块大小 (chunk_size
,默认为 1000)。 -
使用
range(0, len(ids), chunk_size)
迭代 ID 列表,步长为chunk_size
。 -
对于每个块:
-
使用列表切片 (
ids[i:i + chunk_size]
) 提取当前块。 -
使用 f-string 格式化创建标签 (
f"{chunk[0]} 到 {chunk[-1]}"
)。 - 打印标签和当前块(可以将其替换为的实际处理逻辑)。
-
使用列表切片 (
-
示例用法:
-
创建一个示例 ID 列表 (
ids
)。 -
使用示例 ID 列表调用
process_in_chunks
函数。
不需要 Pandas! 对于这种特定任务,基本 Python 列表操作就足够了,并且比使用 Pandas 更有效率。
关于标签:
- 使用 f-string 格式化创建标签是一种简洁的方式来包含第一个和最后一个 ID。
- 如果需要存储已处理块的标签以供以后使用,可以创建一个列表并将每个标签附加到其中。
例如:
processed_labels = []
def process_in_chunks(ids, chunk_size=1000):
# ...(与之前相同的代码)...
processed_labels.append(label)
这会将每个已处理块的标签添加到
processed_labels
列表中。