我有一个csv文件,其中包含公司软件的详细信息以及安装日期。我正在数据帧中使用熊猫读取csv文件。以下是包含两种不同软件的示例数据:
software_id software_name installed_date software_version
8331 Intel(R) Graphics Media Accelerator Driver 2009-05-23 0:00 8.15.10.2008
8331 Intel(R) Graphics Media Accelerator Driver 2010-09-15 0:00 8.15.10.2008
8331 Intel(R) Graphics Media Accelerator Driver 2009-12-27 0:00 8.15.10.2008
8332 Wireless Switch Utility 2009-12-22 0:00 4.3.1400.0
8332 Wireless Switch Utility 2010-11-22 0:00 4.3.1400.0
8332 Wireless Switch Utility 2011-01-25 0:00 4.3.1400.0
因此,根据以上数据,我只需要保留一行,其中包含每个软件代码的最新日期。例如,上述文件的输出应为:
software_id software_name installed_date software_version
8331 Intel(R) Graphics Media Accelerator Driver 2010-09-15 0:00 8.15.10.2008
8332 Wireless Switch Utility 2011-01-25 0:00 4.3.1400.0
如何为一个软件代码选择行集,并删除除最新日期的行以外的所有行,然后移动到下一个软件代码,直到文件中每个软件代码只有一个条目。我无法硬编码要检查的软件id,因为有数千个
我的逻辑是在两个变量中读取并存储第一个软件id和安装日期,然后开始逐行读取文件。下一行将检查软件id是否与存储在变量中的id匹配,然后比较日期并将最新的id存储在变量中。 如果软件id与存储的软件id不匹配,则表示新的软件id块已启动。然后,它将以前的值存储在数据帧中,并开始执行下一个块,依此类推
仅供参考-我是一个熊猫noob
谢谢你的帮助
您可以执行
groupby
,如下所示:它按
software_id
对行进行分组,保留所有需要的列,并为每个组保留具有最高installed_date
的行df
是包含文件内容的数据帧首先,需要将
installed_date
列转换为datetime
:然后,您可以使用以下选项之一:
选项1:
sort
在installed_date
上的值,然后drop_duplicates
只保留每个software_id
的最后一行选项2:
group
使用softaware_id
上的数据帧,并使用idxmax
进行聚合,以获得每个software_id
组的最新日期索引,然后使用loc
和此索引筛选所需行:结果:
相关问题 更多 >
编程相关推荐