Python 删除单列中具有重复值且时间戳较旧的行

Python 删除单列中具有重复值且时间戳较旧的行,python,datetime,duplicates,Python,Datetime,Duplicates,假设我有一个csv文件,其中第一列是预测日期,第二列是发布日期,第三列是预测值: forecast,issued,temp 2016021700,2016021702,5.3 2016021706,2016021702,6.3 2016021712,2016021702,8.6 2016021718,2016021702,5.1 2016021700,2016021703,5.4 2016021706,2016021703,6.4 在python中,我想自动删除那些具有相同预测日期和较旧发布日

假设我有一个csv文件,其中第一列是预测日期,第二列是发布日期,第三列是预测值:

forecast,issued,temp
2016021700,2016021702,5.3
2016021706,2016021702,6.3
2016021712,2016021702,8.6
2016021718,2016021702,5.1
2016021700,2016021703,5.4
2016021706,2016021703,6.4
在python中,我想自动删除那些具有相同预测日期和较旧发布日期的行。根据预测日期,输出应按日期/时间顺序。预期结果是:

forecast,issued,temp
2016021700,2016021703,5.4
2016021706,2016021703,6.4
2016021712,2016021702,8.6
2016021718,2016021702,5.1
有什么帮助吗~

解决方案:我用熊猫解决了这个问题:

import pandas as pd

df = pd.read_csv('data.csv')
df = df.drop_duplicates(subset='forecast',keep='last')
df = df.sort(['forecast'],ascending=True)
df.to_csv('out.csv',index=False)

最简单的方法是根据发布日期列对文件进行排序,然后使用
groupby
删除连续的重复项:

from itertools import groupby

# open a csv_reader for the file
data = sorted(csv_reader, key=lambda cols: make_date(cols[1]))
no_dups_data = []
for key, group in groupby(data, key=lambda cols: cols[1]):
    no_dups_data.append(next(group))
其中
make_date
应以您已有的格式解析日期。您应该能够使用
datetime
模块进行此操作


您也可以避免使用一些
dict
s进行排序,但该解决方案会涉及更多内容(但这可能是一个很好的练习)。

您应该自己尝试一些东西,如果需要帮助,请带着代码来这里。谢谢您的评论。不幸的是,我真的不知道从哪里开始,我所有的努力都离我期望的太远了,不值得在这里发表。如果我离得更近,我会和你分享。此时此刻,任何建议都会有所帮助。谢谢你的建议。它给了我一些关于分类的想法。我的最终解决方案是使用熊猫(代码如下)