pandas - 如何根据数据帧中的时间顺序和重复值分配一个值从 1 到 N 的新列?
问题描述
例子:
id date seq
a 2019/11/01 1
a 2019/12/01 2
b 2019/10/01 1
c 2019/12/01 2
c 2019/11/01 1
我想seq
在 columns 上分配 column base date and id
,后者是重复的。详情如下:
- 对于列中不重复的值,
id
例如b
,它将在列中获得 1seq
。 - 对于在和列
id
中重复的值,它将根据时间序列(列)从 N(N 是重复频率)开始 1。a
c
date
解决方案
您也可以使用排名方法
import pandas as pd
df = pd.DataFrame({'id':[1,1,2,3,3],
'date':['2019/11/01',
'2019/12/01',
'2019/10/01',
'2019/12/01',
'2019/11/01']})
df['date'] = pd.to_datetime(df['date']) # first convert to datetime
df['seq'] = df.groupby('id')['date'].rank(method='dense').astype(int)
id date seq
0 1 2019-11-01 1
1 1 2019-12-01 2
2 2 2019-10-01 1
3 3 2019-12-01 2
4 3 2019-11-01 1
推荐阅读
- coq - 逻辑:All_In 无法展开嵌套的 forall
- c# - 将多页 tiff 文件转换为多个 tiff 页面
- python - blockmanage() 接受 1 个位置参数,但在将数组提供给函数时给出了 36 个
- python - 如何让我的 Sprite 出现在我的窗口中?
- docker - 502 nginx 后面带有 pgadmin4 的错误网关?
- excel - 添加用于从 Word 注释中提取标题到 Excel 中的代码
- c - HashTable插入和查找的指针问题
- php - 通过 WooCommerce 中的挂钩功能对订单项目进行排序
- angular - Observable 自定义原型函数,是“不是函数”
- php - 我的 PHP 代码可以工作,但“printf 或 echo”语句不工作!如何解决?