pandas 用其他列中的唯一值标记DataFrame中的最后一行

k7fdbhmy  于 2022-12-09  发布在  其他
关注(0)|答案(1)|浏览(144)

对于DataFrame,例如:

col1  col2  val
0     1     1    1
1     1     1    2
2     1     1    3
3     1     2    1
4     1     2    2
5     1     2    3
6     2     1    1
7     2     1    2
8     2     2    1

我要生产:

col1  col2  val  final
0     1     1    1  False
1     1     1    2  False
2     1     1    3   True
3     1     2    1  False
4     1     2    2  False
5     1     2    3   True
6     2     1    1  False
7     2     1    2   True
8     2     2    1   True

本质上标记col1col2的每个唯一值的最终val(最大)。
(Data按col1〉col2〉瓦尔升序排序)
我已经尝试过循环和设置每一个,因为他们出现如下:

df["final"] = False

for col1 in df["col1"].unique():
    for col2 in df["col2"].unique(): 
        df[df["col1"].eq(col1) & df["col2"].eq(col2)].iloc[-1]["final"] = True

但这并不能设定价值观。

a0zr77ik

a0zr77ik1#

尝试使用groupby

df['new'] = df.val.eq(df.groupby(['col1','col2']).val.transform('max'))
df
Out[383]: 
   col1  col2  val    new
0     1     1    1  False
1     1     1    2  False
2     1     1    3   True
3     1     2    1  False
4     1     2    2  False
5     1     2    3   True
6     2     1    1  False
7     2     1    2   True
8     2     2    1   True

相关问题