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

问题描述 投票:0回答:1

我正在使用 pandas 数据框。这个数据框有3个重要的列,一列是

AmountOfStock
,表示可用单位的数量,另一列是
ProductType
,这是指定产品的代码,最后
DateTime
,表示可用单位的日期和时间数据已发送至数据库。 数据库每 10 秒记录一次每种产品的库存量,因此有些行会是

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

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

python pandas database row delete-row
1个回答
0
投票

您可以使用 group by 和 shift 来实现这一点。这是示例代码

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)

© www.soinside.com 2019 - 2024. All rights reserved.