pandas - 标记每个 groupby 中的第一个元素

标签 pandas list dataframe numpy pandas-groupby

我有一个如下所示的数据框

df = pd.DataFrame({'group':[1,1,2,2,2],'time':[1,2,3,4,5],'C':[6,7,8,9,10]})
    group   time    C
0   1       1       6
1   1       2       7
2   2       3       8
3   2       4       9
4   2       5       10

我希望将每个组中的第一个元素(根据时间)标记为 True,即:

    group   time    C   first_in_group
0   1       1       6   True
1   1       2       7   False
2   2       3       8   True
3   2       4       9   False
4   2       5       10  False

我尝试了 groupby 的几种组合,first 但没有达到我想要的效果。

在 Pandas 中有一种优雅的方法吗?

最佳答案

使用duplicated :

df['first_in_group'] = ~df.group.duplicated()
输出:
   group  time   C  first_in_group
0      1     1   6            True
1      1     2   7           False
2      2     3   8            True
3      2     4   9           False
4      2     5  10           False

注意:首先进行排序(如果需要)。

df = df.sort_values(['group', 'time'])

关于pandas - 标记每个 groupby 中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68168631/

相关文章:

python - 数据框列的平均值

python - 根据 csv 文件名命名数据框?

python - Dataframe 按列值过滤行

python - 将标准差添加到 pandas groupby 对象的平均值

Java如何制作一个方法,该方法不能同时接受两种列表类型

python - 如何随机匹配多个相同长度列表中的元素?

python - 在数据框中成对排列条目序列

python - Dask dataframe apply 在传递局部变量作为参数时给出意外的结果

Python - 使用乘法运算符创建列表中对象的副本

python - 从 Pandas 数据框中提取重复