请考虑下表:
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
对表进行排序,然后获取最新的记录(单行)并将其移动到数据帧的第一行位置,而不复制它。我希望这有助于理解这个问题。
提前非常感谢
使用concat
选择带有 min 的第一个值,然后选择所有其他带有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
我不确定这是否是你想要的。
df.sort_values(by='freq',ascending=False,inplace=True)