请考虑下表:
date mainMode freq
7 1560327222 CAR 3
165 1560327508 WALKING 1
28 1560327306 CAR 1
35 1560326894 CAR 1
184 1560327408 CAR 2
我想使freq
列的表以降序排列,但是第一行必须始终是基于date
列的最新行。想法是将最新的文件移到第一行,而不是复制它或插入相同的重复文件,而是将其移到第一位置,避免重复。
预期结果将是:
date mainMode freq
35 1560326894 CAR 1
7 1560327222 CAR 3
184 1560327408 CAR 2
165 1560327508 WALKING 1
28 1560327306 CAR 1
编辑
目标是基于freq
对表进行排序,然后获取最新记录(单行)并将其移至数据框的第一行位置,而不进行重复。我希望这有助于理解问题。
非常感谢您
答案 0 :(得分:1)
使用concat
并选择带有最小值的第一个值,然后使用sort_values
选择所有其他行:
#select all rows with min date
m = df['date'] == df['date'].min()
df = pd.concat([df[m], df[~m].sort_values('freq', ascending=False)])
print (df)
date mainMode freq
35 1560326894 CAR 1
7 1560327222 CAR 3
184 1560327408 CAR 2
165 1560327508 WALKING 1
28 1560327306 CAR 1
或者:
#select index value by first minimal date
i = df['date'].idxmin()
df = pd.concat([df.loc[[i]], df[df.index != i].sort_values('freq', ascending=False)])
print (df)
date mainMode freq
35 1560326894 CAR 1
7 1560327222 CAR 3
184 1560327408 CAR 2
165 1560327508 WALKING 1
28 1560327306 CAR 1
答案 1 :(得分:0)
我不确定这是否是您想要的。
df.sort_values(by='freq',ascending=False,inplace=True)