提问人:slow_learner 提问时间:11/16/2023 更新时间:11/16/2023 访问量:39
如何识别 pandas 数据帧中的库存变化
How can I identify changes in stock in a pandas dataframe
问:
我正在使用 pandas 数据框。此数据框有 3 个重要列,一列是 ,表示可用单位的数量,另一列是 ,表示指定产品的代码,最后 ,表示数据发送到数据库的日期和时间。
数据库每 10 秒记录一次每种产品的库存量,因此某些行将是AmountOfStock
ProductType
DateTime
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 行。 有人可以告诉我怎么做吗?
答:
2赞
User12345
11/16/2023
#1
您可以使用 和 来实现这一点。示例代码如下: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)
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
评论