Python 在每3行中选择2行并列出结果

Python 在每3行中选择2行并列出结果,python,pandas,compare,Python,Pandas,Compare,假设我有以下数据帧: 。第1栏第2栏 0 25 1 1 89 2 2 59 3 3 78 10 4 99 20 5 38 30 6 89 100 7 57 200 8 87 300 我不确定我想做的事是否不可能。但我想比较col

假设我有以下数据帧:

。第1栏第2栏
0       25           1
1       89           2
2       59           3
3       78          10
4       99          20
5       38          30
6       89         100
7       57         200
8       87         300
我不确定我想做的事是否不可能。但我想比较column1的每三行,然后从三行中取出最高的2,并将相应的2 Column2值分配给一个新列。第3列中的值与是否连接无关。不管它们是否排列,因为我知道第3列的每2行属于第1列的每3行

。第1栏第2栏第3栏
0       25           1        2
1       89           2        3
2       59           3
3       78          10        20
4       99          20        10
5       38          30
6       89         100        100
7       57         200        300
8       87         300
您可以使用创建分组数组,该数组每3个值分组一次

然后使用然后使用提取这些值的索引,然后将它们分配给
Column3
handles

要获得问题中提到的输出,您必须排序并将
NaN
推到最后,然后执行此附加步骤

df['Column3'] = df.groupby(g)['Column3'].apply(lambda x:x.sort_values()).values

   Column1  Column2  Column3
0       25        1      2.0
1       89        2      3.0
2       59        3      NaN
3       78       10     10.0
4       99       20     20.0
5       38       30      NaN
6       89      100    100.0
7       57      200    300.0
8       87      300      NaN

如果我想比较10并使用4中的最佳值,我在哪里替换这些值,因为如果我在有3的地方替换10,在有2的地方替换4,我会得到
值错误:Grouper和axis必须是相同长度的
计算出来了。我的数据帧不是10的倍数
df['Column3'] = df.groupby(g)['Column3'].apply(lambda x:x.sort_values()).values

   Column1  Column2  Column3
0       25        1      2.0
1       89        2      3.0
2       59        3      NaN
3       78       10     10.0
4       99       20     20.0
5       38       30      NaN
6       89      100    100.0
7       57      200    300.0
8       87      300      NaN