我正在尝试使用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每个变量具有多个(非唯一)条目。有什么想法我做错了吗?
答案 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'])