如何在pandas中组合groupby和sort

时间:2018-03-01 17:49:35

标签: python python-3.x pandas sorting group-by

我试图获得一个名称'除非列为空白,否则包含所有最新数据。在R中我会使用group_by,按时间戳排序并选择每列的最新值。我试图在这里做到这一点并且非常困惑。有人可以解释如何在Python中执行此操作吗?在下面的示例中,我的目标是:

   col2                 date name
1    4  2018-03-27 15:55:29  bil #latest timestamp with the latest non-blank col4 value

到目前为止我的代码:

d = {'name':['bil','bil','bil'],'date': ['2018-02-27 14:55:29', '2018-03-27 15:55:29', '2018-02-28 19:55:29'], 'col2': [3,'', 4]}
df2 = pd.DataFrame(data=d)
print(df2)

grouped = df2.groupby(['name']).sum().reset_index()
print(grouped)
sortedvals=grouped.sort_values(['date'], ascending=False)
print(sortedvals)

1 个答案:

答案 0 :(得分:0)

以这种方式:

df3 = df2[df2['col2'] != ''].sort_values('date', ascending=False).drop_duplicates('name')

#   col2                 date name
# 2    4  2018-02-28 19:55:29  bil

但是,您提供和输出的数据框似乎不一致。