我试图获得一个名称'除非列为空白,否则包含所有最新数据。在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)
答案 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
但是,您提供和输出的数据框似乎不一致。