如何根据条件移动数据帧中的行



请考虑下表:

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)

最新更新