Pandas -列中每个值的最小值



我有一个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

你想做DataFrame.groupby(),然后在它上调用- .max()/.min()(取决于你想要什么)。例子——

df.groupby('Name').max()

您还需要确保在读取csv时,通过使用.read_csv()方法的dtype参数将'Date'列解析为日期时间(如下面的示例所示)。


示例/演示(用于问题中的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

最新更新