我需要阅读excel文件并突出显示重复的行,而无需编辑excel或添加新的列/行。我用以下方式读取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列的行号,并将其用作将来格式化的列表。
答案 0 :(得分:0)
您可以将自定义函数与DataFrame.duplicated
和keep=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)