我有一个像 id chi prop ord 0 100 L 67 0 1 100 L 68 1 2 100 L 68 2 3 100 L 68 3 4 100 L 70 0 5 100 L 71 0 6 100 R 67 0 7 100 R 68 1 8 100 R 68 2 9 100 R 68 3 10 110 R 70 0 11 110 R 71 0 12 101 L 67 0 13 101 L 68 0 14 101 L 69 0 15 101 L 71 0 16 101 L 72 0 17 201 R 67 0 18 201 R 68 0 19 201 R 69 0ord当 ( prop,chi和id) 都具有相同的值时,本质上给出了条目的顺序。但这不是我想要的。相反,我希望能够枚举{(id, chi)}从 0 到 n_g的每个组 g 的条目,其中 n_g 是组 g 的大小。所以我想获得一些看起来像 id chi prop count 0 100 L 67 0 1 100 L 68 1 2 100 L 68 2 3 100 L 68 3 4 100 L 70 4 5 100 L 71 5 6 100 R 67 0 7 100 R 68 1 8 100 R 68 2 9 100 R 68 3 10 110 R 70 0 11 110 R 71 1 12 101 L 67 0 13 101 L 68 1 14 101 L 69 2 15 101 L 71 3 16 101 L 72 4 17 201 R 67 0 18 201 R 68 1 19 201 R 69 2我想知道是否有一种简单的方法可以使用pandas. 以下非常接近,但感觉太复杂了,由于某种原因,它不会让我join得到原始数据框的结果数据框。(df.groupby(['id', 'chi']) .apply(lambda g: np.arange(g.shape[0])) .apply(pd.Series, 1) .stack() .rename('counter') .reset_index() .drop(columns=['level_2']))编辑:第二种方式当然是for循环方式,但我正在寻找比以下更“Pythonic”的东西:for gname, idx in df.groupby(['id','chi']).groups.items(): tmp = df.loc[idx] df.loc[idx, 'counter'] = np.arange(tmp.shape[0])R 有一种非常简单的方法可以使用tidyverse包来实现这种行为,但是我还没有找到使用pandas. 非常感谢提供的任何帮助!
添加回答
举报
0/150
提交
取消