将某些行分组到列中,然后在 pandas 中重复它们

发布于 2025-01-11 06:23:09 字数 1944 浏览 5 评论 0原文

我希望多次重复第 11 到 17 行,但我希望每次重复在“F”列中都有+1,正如您在所需数据框中看到的那样。我考虑过 Groupby() 但我不确定我应该将哪个 cretria 传递给 groupby() 我想控制三列。

     B     C    D  E  F  J
0    1    CM  MEG  A  1  C
1    2   HM1  MEG  A  1  H
2    3   HM2  MEG  A  1  H
3    4   HM3  MEG  A  1  H
4    5    OM  MEG  A  1  O
5    6    CA  MEG  A  1  C
6    7   HA1  MEG  A  1  H
7    8   HA2  MEG  A  1  H
8    9    CB  MEG  A  1  C
9   10   HB1  MEG  A  1  H
10  11   HB2  MEG  A  1  H
11  12   OEE   EG  A  2  O
12  13   CAE   EG  A  2  C
13  14  HA1E   EG  A  2  H
14  15  HA2E   EG  A  2  H
15  16   CBE   EG  A  2  C
16  17  HB1E   EG  A  2  H
17  18  HB2E   EG  A  2  H
18  19    OE  EGH  A  3  O
19  20    CA  EGH  A  3  C
20  21   HA1  EGH  A  3  H
21  22   HA2  EGH  A  3  H
22  23    CB  EGH  A  3  C
23  24   HB1  EGH  A  3  H
24  25   HB2  EGH  A  3  H

所需的数据框:

   B     C    D  E  F  J
0    1    CM  MEG  A  1  C
1    2   HM1  MEG  A  1  H
2    3   HM2  MEG  A  1  H
3    4   HM3  MEG  A  1  H
4    5    OM  MEG  A  1  O
5    6    CA  MEG  A  1  C
6    7   HA1  MEG  A  1  H
7    8   HA2  MEG  A  1  H
8    9    CB  MEG  A  1  C
9   10   HB1  MEG  A  1  H
10  11   HB2  MEG  A  1  H
11  12   OE   EG  A  2  O
12  13   CA   EG  A  2  C
13  14  HA1   EG  A  2  H
14  15  HA2   EG  A  2  H
15  16   CB   EG  A  2  C
16  17  HB1   EG  A  2  H
17  18  HB2   EG  A  2  H

18  19   OE   EG  A  3  O
19  20   CA   EG  A  3  C
20  21  HA1   EG  A  3  H
21  22  HA2   EG  A  3  H
22  23   CB   EG  A  3  C
23  24  HB1   EG  A  3  H
24  25  HB2   EG  A  3  H

25  26   OE   EG  A  4  O
26  27   CA   EG  A  4  C
27  28  HA1   EG  A  4  H
28  29  HA2   EG  A  4  H
29  30   CB   EG  A  4  C
30  31  HB1   EG  A  4  H
31  32  HB2   EG  A  4  H

32  33    OE  EGH  A  5  O
33  34    CA  EGH  A  5  C
34  35   HA1  EGH  A  5  H
35  36   HA2  EGH  A  5  H
36  37    CB  EGH  A  5  C
37  38   HB1  EGH  A  5  H
38  39   HB2  EGH  A  5  H

I wish to repeat the rows from 11 to 17 many times, but I want that every repeat have +1 in column 'F' as you see in the desired dataframe. I thoght about Groupby() But I am not sure, which cretria I should pass to groupby() I want to have control over three columns.

     B     C    D  E  F  J
0    1    CM  MEG  A  1  C
1    2   HM1  MEG  A  1  H
2    3   HM2  MEG  A  1  H
3    4   HM3  MEG  A  1  H
4    5    OM  MEG  A  1  O
5    6    CA  MEG  A  1  C
6    7   HA1  MEG  A  1  H
7    8   HA2  MEG  A  1  H
8    9    CB  MEG  A  1  C
9   10   HB1  MEG  A  1  H
10  11   HB2  MEG  A  1  H
11  12   OEE   EG  A  2  O
12  13   CAE   EG  A  2  C
13  14  HA1E   EG  A  2  H
14  15  HA2E   EG  A  2  H
15  16   CBE   EG  A  2  C
16  17  HB1E   EG  A  2  H
17  18  HB2E   EG  A  2  H
18  19    OE  EGH  A  3  O
19  20    CA  EGH  A  3  C
20  21   HA1  EGH  A  3  H
21  22   HA2  EGH  A  3  H
22  23    CB  EGH  A  3  C
23  24   HB1  EGH  A  3  H
24  25   HB2  EGH  A  3  H

DISIRED DATAFRAME:

   B     C    D  E  F  J
0    1    CM  MEG  A  1  C
1    2   HM1  MEG  A  1  H
2    3   HM2  MEG  A  1  H
3    4   HM3  MEG  A  1  H
4    5    OM  MEG  A  1  O
5    6    CA  MEG  A  1  C
6    7   HA1  MEG  A  1  H
7    8   HA2  MEG  A  1  H
8    9    CB  MEG  A  1  C
9   10   HB1  MEG  A  1  H
10  11   HB2  MEG  A  1  H
11  12   OE   EG  A  2  O
12  13   CA   EG  A  2  C
13  14  HA1   EG  A  2  H
14  15  HA2   EG  A  2  H
15  16   CB   EG  A  2  C
16  17  HB1   EG  A  2  H
17  18  HB2   EG  A  2  H

18  19   OE   EG  A  3  O
19  20   CA   EG  A  3  C
20  21  HA1   EG  A  3  H
21  22  HA2   EG  A  3  H
22  23   CB   EG  A  3  C
23  24  HB1   EG  A  3  H
24  25  HB2   EG  A  3  H

25  26   OE   EG  A  4  O
26  27   CA   EG  A  4  C
27  28  HA1   EG  A  4  H
28  29  HA2   EG  A  4  H
29  30   CB   EG  A  4  C
30  31  HB1   EG  A  4  H
31  32  HB2   EG  A  4  H

32  33    OE  EGH  A  5  O
33  34    CA  EGH  A  5  C
34  35   HA1  EGH  A  5  H
35  36   HA2  EGH  A  5  H
36  37    CB  EGH  A  5  C
37  38   HB1  EGH  A  5  H
38  39   HB2  EGH  A  5  H

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦巷 2025-01-18 06:23:09

IIUC,你可以这样做:

start = 11
stop  = 17
repeat = 3

d = df.iloc[start:stop+1]

pd.concat([df.iloc[:start]]+
          [d.assign(F=d['F']+i) for i in range(repeat)]+
          [df.iloc[stop:]], ignore_index=True
         )

输出:

     B     C    D  E  F  J
0    1    CM  MEG  A  1  C
1    2   HM1  MEG  A  1  H
2    3   HM2  MEG  A  1  H
3    4   HM3  MEG  A  1  H
4    5    OM  MEG  A  1  O
5    6    CA  MEG  A  1  C
6    7   HA1  MEG  A  1  H
7    8   HA2  MEG  A  1  H
8    9    CB  MEG  A  1  C
9   10   HB1  MEG  A  1  H
10  11   HB2  MEG  A  1  H
11  12   OEE   EG  A  2  O
12  13   CAE   EG  A  2  C
13  14  HA1E   EG  A  2  H
14  15  HA2E   EG  A  2  H
15  16   CBE   EG  A  2  C
16  17  HB1E   EG  A  2  H
17  18  HB2E   EG  A  2  H
18  12   OEE   EG  A  3  O
19  13   CAE   EG  A  3  C
20  14  HA1E   EG  A  3  H
21  15  HA2E   EG  A  3  H
22  16   CBE   EG  A  3  C
23  17  HB1E   EG  A  3  H
24  18  HB2E   EG  A  3  H
25  12   OEE   EG  A  4  O
26  13   CAE   EG  A  4  C
27  14  HA1E   EG  A  4  H
28  15  HA2E   EG  A  4  H
29  16   CBE   EG  A  4  C
30  17  HB1E   EG  A  4  H
31  18  HB2E   EG  A  4  H
32  18  HB2E   EG  A  2  H
33  19    OE  EGH  A  3  O
34  20    CA  EGH  A  3  C
35  21   HA1  EGH  A  3  H
36  22   HA2  EGH  A  3  H
37  23    CB  EGH  A  3  C
38  24   HB1  EGH  A  3  H
39  25   HB2  EGH  A  3  H

IIUC, you could do:

start = 11
stop  = 17
repeat = 3

d = df.iloc[start:stop+1]

pd.concat([df.iloc[:start]]+
          [d.assign(F=d['F']+i) for i in range(repeat)]+
          [df.iloc[stop:]], ignore_index=True
         )

output:

     B     C    D  E  F  J
0    1    CM  MEG  A  1  C
1    2   HM1  MEG  A  1  H
2    3   HM2  MEG  A  1  H
3    4   HM3  MEG  A  1  H
4    5    OM  MEG  A  1  O
5    6    CA  MEG  A  1  C
6    7   HA1  MEG  A  1  H
7    8   HA2  MEG  A  1  H
8    9    CB  MEG  A  1  C
9   10   HB1  MEG  A  1  H
10  11   HB2  MEG  A  1  H
11  12   OEE   EG  A  2  O
12  13   CAE   EG  A  2  C
13  14  HA1E   EG  A  2  H
14  15  HA2E   EG  A  2  H
15  16   CBE   EG  A  2  C
16  17  HB1E   EG  A  2  H
17  18  HB2E   EG  A  2  H
18  12   OEE   EG  A  3  O
19  13   CAE   EG  A  3  C
20  14  HA1E   EG  A  3  H
21  15  HA2E   EG  A  3  H
22  16   CBE   EG  A  3  C
23  17  HB1E   EG  A  3  H
24  18  HB2E   EG  A  3  H
25  12   OEE   EG  A  4  O
26  13   CAE   EG  A  4  C
27  14  HA1E   EG  A  4  H
28  15  HA2E   EG  A  4  H
29  16   CBE   EG  A  4  C
30  17  HB1E   EG  A  4  H
31  18  HB2E   EG  A  4  H
32  18  HB2E   EG  A  2  H
33  19    OE  EGH  A  3  O
34  20    CA  EGH  A  3  C
35  21   HA1  EGH  A  3  H
36  22   HA2  EGH  A  3  H
37  23    CB  EGH  A  3  C
38  24   HB1  EGH  A  3  H
39  25   HB2  EGH  A  3  H
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文