![](/img/trans.png)
[英]Filter Pandas dataframe by most recent date for each unique column value
[英]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.