我有一个名为'order_id'的列的 Pandas DataFrame 对象。具有相同 id 的行属于同一个顺序(大小可以是 1 到 1000 之间的任何值),例如:
sales_orders = {
'order_id': [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4],
# multiple other fields
}
df = pd.DataFrame(sales_orders)
我需要根据截止值将组分成更小的块,例如 3。理想情况下,除了列的后缀之外没有其他任何变化,即:
'order_id': [1-0, 1-0, 1-0, 1-1, 1-1, 1-1, 1-2, 2, 2, 2, 3-0, 3-0, 3-0, 3-1, 3-1, 3-1, 3-2, 3-2, 3-2, 4]
我假设人们可以简单地遍历组并在 for 循环中单独触摸每个组,如下所示:
for order_id, group in df.groupby(by=['order_id']):
if group.shape[0] > 2:
# change column line by line
但这看起来令人难以置信的非熊猫和可怕的缓慢。因此,我将不胜感激一个明智的、高性能的和可读的解决方案 ;) 在此先感谢您的帮助!
哆啦的时光机
相关分类