Groupby在熊猫返回太多行

时间:2020-06-12 15:57:48

标签: python r pandas tidyverse

我正在尝试使用groupby函数过滤熊猫中的数据框。目的是为每个id取每个变量的最早(按日期)实例。

最终我能够像这样使用tidyr解决R中的问题:

  df_mins <-  df %>% 
   group_by(id, variable) %>%
   slice(which.min(as.Date(date)))

我也通过使用如下熊猫实现了一些收获:

df.groupby(['id', 'variable'])['date'].transform(min) == df['date']

但是,产生的df每个变量具有多个(非唯一)条目。有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:2)

由于您有重复的最小日期

m=df.groupby(['id', 'variable'])['date'].transform(min) == df['date']
df=df[m].drop_duplicates(['id', 'variable'])

在R中我们也可以做到

df=df[order(df$date),]

df=df[!duplicated(df[c('id', 'variable')]),]

大熊猫一样

df=df.sort_values(['date']).drop_duplicates(['id', 'variable'])