如何在Pandas DataFrame中筛选库存变动及初始数据行
Pandas保留库存变动行与初始行的实现方法
核心思路
按ProductType分组,对每个产品的库存数据逐行对比:保留每组的初始行,以及当前行库存与上一行不同的行。
步骤与代码
- 构造示例DataFrame(已有数据可跳过此步)
import pandas as pd # 示例数据 data = { 'DateTime': ['2023-11-16 10:00:00', '2023-11-16 10:00:00', '2023-11-16 10:00:10', '2023-11-16 10:00:10', '2023-11-16 10:00:20', '2023-11-16 10:00:20'], 'ProductType': ['ProductA', 'ProductB', 'ProductA', 'ProductB', 'ProductA', 'ProductB'], 'AmountOfStock': [30, 15, 29, 15, 29, 14] } df = pd.DataFrame(data) # 确保DateTime为时间类型(原始数据已处理可省略) df['DateTime'] = pd.to_datetime(df['DateTime'])
- 过滤目标行
使用groupby结合shift()实现对比过滤:
# 按产品分组,筛选初始行或库存变动行 result_df = df.groupby('ProductType').filter( lambda x: (x['AmountOfStock'] != x['AmountOfStock'].shift()).fillna(True) )
结果说明
执行后result_df将保留以下行,符合需求(移除原数据中库存无变动的第4、5行):
| DateTime | ProductType | AmountOfStock |
|---|---|---|
| 2023-11-16 10:00:00 | ProductA | 30 |
| 2023-11-16 10:00:00 | ProductB | 15 |
| 2023-11-16 10:00:10 | ProductA | 29 |
| 2023-11-16 10:00:20 | ProductB | 14 |
内容的提问来源于stack exchange,提问作者slow_learner
相关产品推荐
相关产品推荐

