我想对每个集群的datetime列进行排序。
latitude longitude cluster datetime
0 57.723610 11.925191 1 2021-06-13 14:22:11.682
1 57.723614 11.925187 1 2021-06-13 14:22:13.562
2 57.723610 11.925172 1 2021-06-13 14:22:28.635
3 57.724075 11.923708 2 2021-06-13 14:23:44.905
4 57.723637 11.925056 2 2021-06-13 14:22:59.336
5 57.723614 11.925178 3 2021-06-13 14:22:44.170
6 57.723827 11.924635 3 2021-06-13 14:23:14.479
7 57.723610 11.925191 3 2021-06-13 14:22:04.000
8 57.723866 11.924005 3 2021-06-13 14:23:29.605
为此,我尝试使用groupby()和apply():
# Converting the time column from object to datetime
df["datetime"]= pd.to_datetime(df["datetime"], format="%Y-%m-%d %H:%M:%S.%f")
# Sorting date per cluster
df.groupby("cluster").apply(df.sort_values(by="datetime", inplace=True))
但是,我得到了一个错误:
“非类型”对象不可调用
我的最终目标是将每个集群中对应于最早(最早)和最晚(最近)时间的行提取到一个新的df。
2条答案
按热度按时间3duebb1j1#
排序不需要groupby,只需先按datetime排序,然后按群集排序:
但是,如果您想获得每个集群中最早和最新的记录,那么最好在groupby中完成所有工作:
cidc1ykv2#
你需要通过考试
function
到apply
方法(可调用)。你可以用
lambda
作用于apply
如下-