python 如何在Pandas中用第一个出现的索引标记重复行?

67up9zun  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(128)

我正在尝试编写一个脚本来查找电子表格中的重复行。我正在使用Pandas库。这是初始 Dataframe :

import pandas as pd

df = pd.DataFrame({'title': [1, 2, 3, 4, 5, 6, 7, 8],
                   'val1': [1.1, 1.1, 2.1, 8.8, 1.1, 1.1, 8.8, 8.8],
                   'val2': [2.2, 3.3, 5.5, 6.2, 2.2, 3.3, 6.2, 6.2],
                   'val3': [3.4, 4.4, 5.5, 8.4, 0.5, 3.4, 1.9, 3.7]
                   })

print(df)

title  val1     val2     val3
 1      1.1      2.2      3.4
 2      1.1      3.3      4.4
 3      2.1      5.5      5.5
 4      8.8      6.2      8.4
 5      1.1      2.2      0.5 
 6      1.1      3.3      3.4
 7      8.8      6.2      1.9
 8      8.8      6.2      3.7

我已经根据指定的列使用duplicated方法找到了所有重复的行,并通过添加新列来标记它们,例如

df['duplicate'] = df.duplicated(keep=False, subset=['val1', 'val2'])

print(df)

title  val1     val2     duplicated
 1      1.1      2.2        true
 2      1.1      3.3        true
 3      2.1      5.5        false
 4      8.8      6.2        true
 5      1.1      2.2        true
 6      1.1      3.3        true
 7      8.8      6.2        true
 8      8.8      6.2        true

在最后一步中,我希望通过添加带有第一个出现的标题的信息来标记所有重复行。这样,我希望以后更容易对它们进行排序和分组。结果如下所示:

title  val1     val2     first_occurence
 1      1.1      2.2         true
 2      1.1      3.3         true 
 3      2.1      5.5         false
 4      8.8      6.2         true
 5      1.1      2.2         title1
 6      1.1      3.3         title2
 7      8.8      6.2         title4
 8      8.8      6.2         title4

我试着找一个类似的主题,但是没有成功。有人知道怎么做吗?

vmdwslir

vmdwslir1#

你不能在Pandas里做。这是一个可能的解决方案:
1.获取重复行的列表
1.迭代该列表并生成一个新行,其中包含一个类似“duplicate_index”的新列,并在该列中插入每个重复行的第一个相等行的标题编号
1.在新df中插入所有行(“duplicate_index”中具有空值的原始行
1.保存新df

相关问题