【问题标题】:How to combine groupby and sort in pandas如何在熊猫中结合groupby和sort
【发布时间】:2018-03-01 17:49:35
【问题描述】:

我正在尝试使用所有最新数据为每个“名称”获取一个结果,除非该列是空白的。在 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)

【问题讨论】:

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


    【解决方案1】:

    这是一种方法:

    df3 = df2[df2['col2'] != ''].sort_values('date', ascending=False).drop_duplicates('name')
    
    #   col2                 date name
    # 2    4  2018-02-28 19:55:29  bil
    

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

    【讨论】:

    • 这确实解决了我的示例数据中的问题,不幸的是,对于我的实际代码删除缺少 col2 的行不是一个选项,因为它们可能还有其他好的数据:)
    • @Rilcon42,您可以将结果分配给一个新变量,例如df3(在我的更新中)。这样你的原始数据框就不会改变。
    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 2014-02-25
    • 2019-03-21
    • 1970-01-01
    • 2021-03-21
    • 2013-11-07
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多