我正在使用 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
我只想获取产品数量发生变化或初始值的行。因此,我有兴趣删除第四行和第五行。 有人可以告诉我该怎么做吗?
您可以使用 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)