Python按去年活动对pd.DataFrame中的“名称”进行排序

时间:2018-07-15 19:07:25

标签: python pandas filter

Hello stackoverflow社区,

我有一个包含300多个条目的df。 df显示了多年以来,不同的作者/研究人员一直在一个特定的研究项目中积极提交出版物。 数据如下所示:

Author     Name of Publication     Year
Name A   Pub A                   1998
Name B   Pub B                   2005
Name C   Pub A                   1998
Name A   Pub C                   2000
etc...

由于作者在项目中处于活动状态时已发表了多个出版物,因此df包含多个条目及其名称。 我现在想过滤作者最早的活动年份以及他/她最后的活动年份。目的是得出每个作者的活动时间跨度。

但是目前我真的不知道如何应用适当的过滤器。 为了得出每个作者的最大值,我用来过滤df的代码是:

     df.groupby('author')['year'].aggregate(pd.Series.idxmax)

然后,我将在同一行中过滤最小值。 不幸的是,输出显示“此dtype不允许执行归约运算'argmax'。”

谁能告诉我我所监督的事情/如何编写一个实际起作用的过滤器?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以按日期对数据框进行排序,然后将export PKG_CONFIG_PATH=/full/directory/path/to/yourfileaggfirst结合使用来提取最早和最近的活动年份:

last

然后,您可以根据需要使用df.sort_values('Year').groupby('Author')['Year'].agg(['first', 'last']) first last Author Name A 1998 2000 Name B 2005 2005 Name C 1998 1998 将这些结果放回原始数据框中:

join