繁体   English   中英

如何根据条件在数据框中移动一行

[英]How to move a row in a dataframe based on a condition

考虑下表:

              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行。 这个想法是将最新的移动到第一行,而不是复制它或插入相同的重复文件,而是将它移动到第一个位置,避免复制它。

预期的结果是:

              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与 select first value with 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM