我有以下示例 DataFrame:
Item Num Price Type Sales Date
456 4 2017-12
456 1 2018-01
340 1 2017-12
340 1 2018-01
500 2 2017-12
500 1 2018-01
我想检查 1 月份价格类型为 1 的每个商品编号,12 月份的价格类型是否不同,并标记该行。所以我希望我的输出是这样的:
Item_Num Price Type Sales Date Flag
456 4 2017-12 price type change
500 2 2017-12 price type change
我在想这样的事情:
for num in df.Item_Num:
print(desired rows)
这是你想要的吗?
df['Sales Date'] = pd.to_datetime(df['Sales Date'])
cond = (df['Item Num'] == df['Item Num'].shift(-1)) & (df['Price Type'] != df['Price Type'].shift(-1))
df['Flag'] = np.where(cond, 'Price Type Change', '')
你得到
Item Num Price Type Sales Date Flag
0 456 4 2017-12-01 Price Type Change
1 456 1 2018-01-01
2 340 1 2017-12-01
3 340 1 2018-01-01
4 500 2 2017-12-01 Price Type Change
5 500 1 2018-01-01
如果您只想比较 2017 年 12 月和 2018 年 1 月的值,您可以先使用
df = df[((df['Sales Date'].dt.year == 2018) & (df['Sales Date'].dt.month == 1)) | ((df['Sales Date'].dt.year == 2017) & (df['Sales Date'].dt.month == 12))]
我是一名优秀的程序员,十分优秀!