[英]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.