从重复行中获取行号

Get row numbers from duplicate rows

我需要阅读 excel 文件并突出显示重复的行,而不编辑 excel 或添加新的 column/rows。我阅读了 excel 文件: df = pd.read_excel(path2, sheet_name='Sheet1')df.drop_duplicates(subset=df.columns.difference(['Mark 4'])) 我得到所有重复的行,不包括 'Mark 4'。问题是我无法提取这些行号来使用它们 df.style.applymap(color_negative_red) 突出显示 excel 中的那些行,因为它们不包含在 df.

我试过了 dfToList = redovi['unique_row_to_index'].tolist() 但由于没有唯一行,我无法提取数据。

df.drop_duplicates(subset=df.columns.difference(['Mark 4'])) 的输出是:

    Type1 Type2
0    w    A
11    w    A
12    w    A
18    w    A
19    w    A
20    w    A

[6 行 x 170 列]

我需要提取那些不属于 excel 列的行号,并将它们用作将来格式化的列表。

您可以使用带有 DataFrame.duplicatedkeep=False 的自定义函数来掩码指定列名的重复行:

df = pd.DataFrame({'Type1':['w'] * 3 + ['a'],
                   'Type2':['A'] * 3 + ['b'],
                   'Mark 4': range(4)})

print (df)
  Type1 Type2  Mark 4
0     w     A       0
1     w     A       1
2     w     A       2
3     a     b       3

测试:

print (df.duplicated(subset=df.columns.difference(['Mark 4']), keep=False))
0     True
1     True
2     True
3    False
dtype: bool

def highlight(x):
    c = 'background-color: red'

    df1 = pd.DataFrame('', index=x.index, columns=x.columns)
    m = x.duplicated(subset=x.columns.difference(['Mark 4']), keep=False)
    df1 = df1.mask(m, c)
    return df1

df.style.apply(highlight, axis=None)