当前位置: 首页 > 知识库问答 >
问题:

从重复行中获取行号

周辰沛
2023-03-14

我需要读取excel文件并突出显示重复的行,而不需要编辑excel或添加新的列/行。我使用df=pd.read_excel(path2,sheet_name='sheet1')读取excel文件,并使用df.drop_duplicates(Subset=df.columns.difference(['mark4']))读取所有重复行,但不包括'mark4'。问题是,我无法提取这些行号来与df.style.applymap(color_negative_red)一起使用,以突出显示excel中的那些行,因为这些行不包括在DF中。

我试过dftoList=redovi['unique_row_to_index'].toList(),但由于没有唯一的行,所以无法提取数据。

df.drop_duplicates(subset=df.columns.difference(['标记4']))的输出为:

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

[6行x170列]

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

共有1个答案

焦宏硕
2023-03-14

您可以使用带有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)
 类似资料:
  • 一切正常(使用AsyncTask插入、更新、删除),但按id获取一行不是。。。 主要问题是有两种活动。 回收视图 我想在点击RecyclerView列表项后,从数据库中按id获取一个项。如果我用LiveData获取它,我就无法将其与UI线程中的变量同步。 如何从数据库中获取一行? 在DAO中,我有: 在存储库中: 如果我把它写在主线程里 它给出了一个错误: 我应该使用AsyncTask,但如何使用

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: MySQL中的ROW_NUMBER() 这可能吗?我想按特定的顺序获取一堆结果,然后通过其ID找出行的位置,例如: 我想按字母顺序获得1的位置,它将返回2 问题答案: 从这个答案>> ROW_NUMBER()在MySQL中修改

  • 我有一个数据帧,我根据-列进行分组。对于每个组,我想得到包含最大值的行(整行,而不仅仅是值)。我能够做到这一点,首先获得每个组的最大值,然后创建一个过滤器数组,然后在原始数据帧上应用过滤器。像这样, 这个解决方案是可行的,但不知何故似乎过于繁琐。有人知道更好的方法吗?最好是一条线。关于潜在的重复,我稍后会处理这些:)

  • 这是我打印日志时的JSON结果。我无法从这个结果中获得数据。请建议如何从这个结果中获得数据。错误显示of类型org.json.jsonArray不能转换为JSONObject,我知道已经有很多文章与此相关,但我不明白如何获取数据。

  • 我想让对话框片段(DialogFragment)向我返回一个值,该值是在退出时在编辑数量(editQuantity)中输入的。 但我没有办法让它发挥作用。我可以通过将值传递给intent来实现这一点,但这会破坏当前活动的进度。 除了传递意图之外,还有什么方法可以返回我的值吗?

  • 我有一个由3列组成的表格。 user_id,certificate_type,approved 每个user_id可以有多行,每行的certificate_type介于1和30之间。 我要做的是用一组不同的证书类型搜索表,并生成一个与组合匹配的所有user_id的列表。如果行已批准=1,我只想要一个结果。 我可以想出非常复杂的方法来进行多个搜索,但我怀疑在SQL中有一个简单的查询,因为我不相信我正