考虑我有df。
first_primary='N8910-011B0BB'
dct = {'Store':('19387','19387','19387','19387','19387'),
'SELF-NBR':('INC1539641','INC1514967','INC1518545','INC1518666','INC1514983'),
'PARTS_NEW':('N8910-011B0BB','N8910-011B0BB','Q24-FR128043','Q24-FR128043','Q24-FR128042'),
'date_diff':(1,7,1,1,0),
'PLACEDAY' :('2020-05-11 18:58:35','2020-05-18 05:25:39','2020-05-12 04:42:29','2020-05-12 02:22:22','2020-05-11 15:20:32')
}
df = pd.DataFrame(dct)
df['PLACEDAY']= pd.to_datetime(df['PLACEDAY'])
print(df)
Store SELF-NBR PARTS_NEW date_diff PLACEDAY
0 19387 INC1539641 N8910-011B0BB 1 2020-05-11 18:58:35
1 19387 INC1514967 N8910-011B0BB 7 2020-05-18 05:25:39
2 19387 INC1518545 Q24-FR128043 1 2020-05-12 04:42:29
3 19387 INC1518666 Q24-FR128043 1 2020-05-12 02:22:22
4 19387 INC1514983 Q24-FR128042 0 2020-05-11 15:20:32
以上的数据帧df
是从for循环获得的,并且对于每个唯一的store_id都不同。
这里的商店数据为19387,每个商店的first_primary也有所不同,但是将由代码中描述的first_primary
来标识
仅当df
重复多次时,我才想对first_primary
进行条件排序,
按PLACEDAY
对数据框进行排序(降序),以确保first_primary
始终位于顶部。
预期数据框
Store SELF-NBR PARTS_NEW date_diff PLACEDAY
0 19387 INC1514967 N8910-011B0BB 7 2020-05-18 05:25:39
1 19387 INC1539641 N8910-011B0BB 1 2020-05-11 18:58:35
2 19387 INC1518545 Q24-FR128043 1 2020-05-12 04:42:29
3 19387 INC1518666 Q24-FR128043 1 2020-05-12 02:22:22
4 19387 INC1514983 Q24-FR128042 0 2020-05-11 15:20:32
摘要:
如果first_primary
中的重复PARTS_NEW
,first_primary
中带有最新时间戳,则应以相应的cols(“ SELF-NBR”,“ PARTS_NEW”,等。)
如果first_primary
中的PARTS_NEW
仅被计数一次,请确保first_primary
为
如果是df
让我知道是否需要更多查询。
答案 0 :(得分:1)
用sort_values
尝试argsort
+ isin
df = df.sort_values('PLACEDAY',ascending=False)
first_primary='N8910-011B0BB'
df = df.iloc[(~df.PARTS_NEW.isin([first_primary])).argsort()]
df
Store SELF-NBR PARTS_NEW date_diff PLACEDAY
1 19387 INC1514967 N8910-011B0BB 7 2020-05-18 05:25:39
0 19387 INC1539641 N8910-011B0BB 1 2020-05-11 18:58:35
2 19387 INC1518545 Q24-FR128043 1 2020-05-12 04:42:29
3 19387 INC1518666 Q24-FR128043 1 2020-05-12 02:22:22
4 19387 INC1514983 Q24-FR128042 0 2020-05-11 15:20:32