首页 > 解决方案 > Pandas DataFrame - 如何在按另一列分组时获取每列的最新值

问题描述

好吧,伙计们,我被难住了。老实说,我对使用 pandas 操作数据框非常陌生。

假设我有下面的数据框,其中最近的条目位于顶部,按降序排列(我已经根据可用的数据在我的程序中完成了该部分)。

我们将其称为“df_people”,它包含以下数据:

username    first   middle      last
jschmoe     joseph  NaN         schmoe
jdoe        jane    marie       doe
jschmoe     joseph  michael     schmoe
jdoe        jane    NaN         doe
tuser       test    NaN         user

我正在尝试将其解析为仅显示基于“用户名”列的每列中的最新有效数据(或者如果没有有效条目,则当然保留“NaN”)

预期结果:

username    first   middle  last
jschmoe     joseph  michael schmoe
jdoe        jane    marie   doe
tuser       test    NaN     user

在我的实际数据框中,每当我需要运行此报告时,我将拥有 5-100 列和轻松超过 100k 行。虽然我不期望任何东西对于我想要完成的事情来说都是超快的,但我只是想给出规模,这样你就可以理解即使是小的优化也能产生很大的不同可靠的结果总是比报告完成快几秒钟更重要!现在我没有结果......所以任何事情都比这更好......

通过浏览这个网站和 pandas 文档,我尝试了很多不同的组合,但我认为我对所有 pandas 的能力缺乏了解,这严重限制了这里。

任何建议或想法将不胜感激!

标签: pythonpandasdataframe

解决方案


>>> df.groupby('username', as_index=False).first()
  username   first   middle    last
0     jdoe    jane    marie     doe
1  jschmoe  joseph  michael  schmoe
2    tuser    test      NaN    user

推荐阅读