我有一个数据帧,如下所示:

    df = pd.DataFrame({'State': ['Texas', 'Texas', 'Florida', 'Florida'],
                       'a': [4, 5, 1, 3], 'b': [6, 10, 3, 11]})
    df['ts'] = datetime.utcnow()

表格如下所示

     State  a   b                ts
0    Texas  4   6 2022-09-06 15:33:31
1    Texas  5  10 2022-09-06 15:33:31
2  Florida  1   3 2022-09-06 15:33:31
3  Florida  3  11 2022-09-06 15:33:31

我想要实现的是,对于每个组‘ts’应该是唯一的,所以我想用+1秒递增它的所有其他值 因此,输出数据帧将如下所示:

     State  a   b                ts
0    Texas  4   6 2022-09-06 15:33:31
1    Texas  5  10 2022-09-06 15:33:32
2  Florida  1   3 2022-09-06 15:33:31
3  Florida  3  11 2022-09-06 15:33:32

使用GROUPBY和Transform,可以获得系列,但不能进一步:

df['ts'] = df['ts'].groupby(df['State']).transform(lambda x: increment_ms(x))

我如何才能实现上述输出?

推荐答案

您可以将groupby().cumcount()pd.to_timedelta一起使用:

df['ts'] += pd.to_timedelta(df.groupby('State').cumcount(), unit='s')

输出:

     State  a   b                         ts
0    Texas  4   6 2022-09-06 15:40:46.429416
1    Texas  5  10 2022-09-06 15:40:47.429416
2  Florida  1   3 2022-09-06 15:40:46.429416
3  Florida  3  11 2022-09-06 15:40:47.429416

Python相关问答推荐

拆分pandas列并创建包含这些拆分值计数的新列

跟踪我已从数组中 Select 的样本的最有效方法

将HTML输出转换为表格中的问题

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

如何调整spaCy token 化器,以便在德国模型中将数字拆分为行末端的点

为什么tkinter框架没有被隐藏?

处理(潜在)不断增长的任务队列的并行/并行方法

从numpy数组和参数创建收件箱

更改键盘按钮进入'

用合并列替换现有列并重命名

django禁止直接分配到多对多集合的前端.使用user.set()

Python—从np.array中 Select 复杂的列子集

SQLAlchemy Like ALL ORM analog

driver. find_element无法通过class_name找到元素'""

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

如何使regex代码只适用于空的目标单元格

dask无groupby(ddf. agg([min,max])?''''

如何强制向量中的特定元素在Gekko中处于优化解决方案中

获取PANDA GROUP BY转换中的组的名称

两个名称相同但值不同的 Select 都会产生相同的值(discord.py)