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'。”
谁能告诉我我所监督的事情/如何编写一个实际起作用的过滤器?
谢谢。
答案 0 :(得分:0)
您可以按日期对数据框进行排序,然后将export PKG_CONFIG_PATH=/full/directory/path/to/yourfile
与agg
和first
结合使用来提取最早和最近的活动年份:
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