我有一个CSV文件如下:
Date, Name
2015-01-01 16:30:00.0, John
2015-02-11 16:30:00.0, Doe
2015-03-01 16:30:00.0, Sam
2015-03-05 16:30:00.0, Sam
2015-04-21 16:30:00.0, Chris
2015-05-07 16:30:00.0, John
2015-06-08 16:30:00.0, Doe
您可以看到在多个日期重复使用相同的名称。我想知道每个唯一名称,日期列中的最大日期是多少。如果您在Python中知道任何内容,如何使用Pandas或其他解决方案?
我想要的结果如下:
Name, Max date(or latest)
John, 2015-01-01 16:30:00.0
Doe, 2015-01-01 16:30:00.0
Sam, 2015-01-01 16:30:00.0
Chris, 2015-01-01 16:30:00.0
答案 0 :(得分:2)
您想要DataFrame.groupby()
然后打电话 - .max()
/ .min()
(根据您的需要而定)。示例 -
df.groupby('Name').max()
您还需要确保在阅读csv时,通过使用.read_csv()
方法的'Date'
参数将dtype
列解析为日期时间(如下所示)在示例中。)
示例/演示(对于问题中的csv示例) -
In [12]: df = pd.read_csv('a.csv',dtype={'Date':pd.datetime,'Name':str})
In [13]: df
Out[13]:
Date Name
0 2015-01-01 16:30:00.0 John
1 2015-02-11 16:30:00.0 Doe
2 2015-03-01 16:30:00.0 Sam
3 2015-03-05 16:30:00.0 Sam
4 2015-04-21 16:30:00.0 Chris
5 2015-05-07 16:30:00.0 John
6 2015-06-08 16:30:00.0 Doe
In [15]: df.groupby(['Name']).max()
Out[15]:
Date
Name
Chris 2015-04-21 16:30:00.0
Doe 2015-06-08 16:30:00.0
John 2015-05-07 16:30:00.0
Sam 2015-03-05 16:30:00.0