繁体   English   中英

Pandas DataFrame - 如何在按另一列分组时获取每列的最新值

[英]Pandas DataFrame - How to get most recent value for each column when grouped by another column

好吧伙计们,我被难住了。 老实说,我对使用熊猫操作数据帧很陌生。

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

我们将其称为“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 列和轻松超过 10 万行。 虽然我不指望什么是超级快就是我要完成的,我只是想给规模,使你能理解小的优化可怎么连有很大的不同。 可靠的结果总是比让报告快几秒钟完成更重要! 现在我没有结果......所以有什么比那更好......

我已经通过浏览本网站和熊猫文档尝试了大量不同的组合,但我认为我对所有熊猫的能力缺乏了解严重限制了这里。

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

>>> 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

您可以使用 drop_duplicates,

df.drop_duplicates(subset='username')

或者使用 groupby

df.groupby('username', sort=False).first().reset_index()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM