- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的 df:
ID Component IDDate EmployeeID CreateUserID
24 1 2017-09-11 00:00:00.000 0907036 Afior
24 2 2017-09-11 00:00:00.000 0907036 Afior
24 3 2017-09-11 00:00:00.000 0907036 Afior
25 1 2017-09-12 00:00:00.000 0907036 Afior
25 3 2017-09-12 00:00:00.000 0907036 Afior
26 8 2017-09-16 00:00:00.000 1013842 JHyde
26 11 2017-09-16 00:00:00.000 1013842 JHyde
26 12 2017-09-16 00:00:00.000 1013842 JHyde
26 23 2017-09-16 00:00:00.000 1013842 JHyde
27 21 2017-09-16 00:00:00.000 0907036 Afior
27 22 2017-09-16 00:00:00.000 0907036 Afior
27 23 2017-09-16 00:00:00.000 0907036 Afior
28 15 2017-10-16 00:00:00.000 1013842 JHyde
28 16 2017-10-16 00:00:00.000 1013842 JHyde
28 19 2017-10-16 00:00:00.000 1013842 JHyde
28 25 2017-10-16 00:00:00.000 1013842 JHyde
28 26 2017-10-16 00:00:00.000 1013842 JHyde
我正在尝试使用 cumcount 创建一个变量,用于保存每个 ID/EmployeeID 组合的观察顺序。我无法将计数应用到我想要的级别,但尝试了 cumcount()
的变体,但这些变体并没有让我完全达到我想要的水平,例如:
df['seq'] = df.groupby(['EmployeeID', 'ID', 'Date']).cumcount().add(1)
df['seq'] = df.groupby(['EmployeeID', 'Date']).cumcount().add(1)
df['seq'] = df.groupby(['EmployeeID', 'ID']).cumcount().add(1)
理想情况下,我的输出如下所示:
ID Component IDDate EmployeeID CreateUserID seq
24 1 2017-09-11 00:00:00.000 0907036 Afior 1
24 2 2017-09-11 00:00:00.000 0907036 Afior 1
24 3 2017-09-11 00:00:00.000 0907036 Afior 1
25 1 2017-09-12 00:00:00.000 0907036 Afior 2
25 3 2017-09-12 00:00:00.000 0907036 Afior 2
26 8 2017-09-16 00:00:00.000 1013842 JHyde 1
26 11 2017-09-16 00:00:00.000 1013842 JHyde 1
26 12 2017-09-16 00:00:00.000 1013842 JHyde 1
26 23 2017-09-16 00:00:00.000 1013842 JHyde 1
27 21 2017-09-16 00:00:00.000 0907036 Afior 3
27 22 2017-09-16 00:00:00.000 0907036 Afior 3
27 23 2017-09-16 00:00:00.000 0907036 Afior 3
28 15 2017-10-16 00:00:00.000 1013842 JHyde 2
28 16 2017-10-16 00:00:00.000 1013842 JHyde 2
28 19 2017-10-16 00:00:00.000 1013842 JHyde 2
28 25 2017-10-16 00:00:00.000 1013842 JHyde 2
28 26 2017-10-16 00:00:00.000 1013842 JHyde 2
有没有办法处理重复数据,让我得到这个输出?首先使 df 变宽然后应用 cumcount() 会更好吗?
最佳答案
这是一种方法,本质上仅按EmployeeID
进行分组,然后检查ID
是否从一行更改为下一行,并返回cumsum
(这基于您的尝试和您想要的输出)。
df['seq'] = df.groupby('EmployeeID')['ID'].transform(lambda x: x.ne(x.shift()).cumsum())
>>> df
ID Component IDDate EmployeeID CreateUserID seq
0 24 1 2017-09-11 00:00:00.000 907036 Afior 1
1 24 2 2017-09-11 00:00:00.000 907036 Afior 1
2 24 3 2017-09-11 00:00:00.000 907036 Afior 1
3 25 1 2017-09-12 00:00:00.000 907036 Afior 2
4 25 3 2017-09-12 00:00:00.000 907036 Afior 2
5 26 8 2017-09-16 00:00:00.000 1013842 JHyde 1
6 26 11 2017-09-16 00:00:00.000 1013842 JHyde 1
7 26 12 2017-09-16 00:00:00.000 1013842 JHyde 1
8 26 23 2017-09-16 00:00:00.000 1013842 JHyde 1
9 27 21 2017-09-16 00:00:00.000 907036 Afior 3
10 27 22 2017-09-16 00:00:00.000 907036 Afior 3
11 27 23 2017-09-16 00:00:00.000 907036 Afior 3
12 28 15 2017-10-16 00:00:00.000 1013842 JHyde 2
13 28 16 2017-10-16 00:00:00.000 1013842 JHyde 2
14 28 19 2017-10-16 00:00:00.000 1013842 JHyde 2
15 28 25 2017-10-16 00:00:00.000 1013842 JHyde 2
16 28 26 2017-10-16 00:00:00.000 1013842 JHyde 2
关于python - 将 cumcount() 与重复项一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483722/
我想要一个新的列( not_ordered_in_STREET_x_before_my_car ),它计算我的 Dataframe 中的 None 值,直到我所在的行,按 x 分组,按 x 和 y 排
当前正在尝试将我从 Pandas 制作的脚本转换为pyspark,我有一个数据框,其中包含以下形式的数据: index | letter ------|------- 0 | a 1
我创建一个数据框 df = pd.DataFrame({"b": ['A','A','A','A','B', 'B','B','C','C','D','D', 'D','D','D','D','D',
我有一个看起来像这样的 df: ID Component IDDate EmployeeID CreateUserID 24 1 2017-09-1
我有一个包含名称和日期的数据框。我想创建一个计数列,它只会在日期不同时递增。请看下面第三栏: Name Date COLUMN I NEED ---- ----
阿罗哈, 我有以下数据框 stores = [1,2,3,4,5] weeks = [1,1,1,1,1] df = pd.DataFrame({'Stores' : stores,
我有这个数据框: dic = {'users' : ['A','A','B','A','A','B','A','A','A','A','A','B','A'], 'pr
考虑数据框 df = pd.DataFrame( [ ['A', 1], ['A', 1], ['B', 1], ['B', 0
这是我拥有的数据: ID Vehicle Calculator Offer NextCalculator NextOffer 3497827 2002 For
我有一个如下所示的 df: df = pd.DataFrame({"child": ["A", "B", "C", "D", "E", "D", "A"],
我有一个看起来像这样的数据框 ID ..... config_name config_version ... aa A 0
我有一个 DataFrame,我按 Internal Score 和 Issue Date(按季度)分组。然后我想创建一个统计表,其中包括贷款数量的累计计数(由 Loan # 的不同计数表示)、贷款金
我想添加一列(标题为“acc_dates”),该列将给出带有日期时间索引的数据框中日期的增加计数。这是一个例子: import pandas as pd import datetime as dt d
我是一名优秀的程序员,十分优秀!