如何识别 pandas 数据帧中的库存变化

How can I identify changes in stock in a pandas dataframe

提问人:slow_learner 提问时间:11/16/2023 更新时间:11/16/2023 访问量:39

问:

我正在使用 pandas 数据框。此数据框有 3 个重要列,一列是 ,表示可用单位的数量,另一列是 ,表示指定产品的代码,最后 ,表示数据发送到数据库的日期和时间。 数据库每 10 秒记录一次每种产品的库存量,因此某些行将是AmountOfStockProductTypeDateTime

1-2023-11-16 10:00:00, ProductA, 30
2-2023-11-16 10:00:00, ProductB, 15
3-2023-11-16 10:00:10, ProductA, 29
4-2023-11-16 10:00:10, ProductB, 15
5-2023-11-16 10:00:20, ProductA, 29
6-2023-11-16 10:00:20, ProductB, 14

我只想获取产品数量或初始值发生变化的行。因此,我有兴趣删除第 4 行和第 5 行。 有人可以告诉我怎么做吗?

python pandas 数据库 删除行

评论


答:

2赞 User12345 11/16/2023 #1

您可以使用 和 来实现这一点。示例代码如下:group byshift

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)
 
df['DateTime'] = pd.to_datetime(df['DateTime'])

# Filter rows where 'AmountOfStock' changes or initial values occur
result = df[df['AmountOfStock'] != df.groupby('ProductType')['AmountOfStock'].shift(1)]

print(result)

enter image description here

1赞 Panda Kim 11/16/2023 #2

法典

使用 groupby + diff

out = df[df.groupby('ProductType')['AmountOfStock'].diff().ne(0)]

外:

    DateTime            ProductType AmountOfStock
0   2023-11-16 10:00:00 ProductA    30
1   2023-11-16 10:00:00 ProductB    15
2   2023-11-16 10:00:10 ProductA    29
5   2023-11-16 10:00:20 ProductB    14