【问题标题】:Removing duplicates for a column including rows adjacent and append duplicates to the above删除包含相邻行的列的重复项并将重复项附加到上面
【发布时间】:2017-11-22 23:52:54
【问题描述】:

我想 delete duplicates for Column Ddelete rows adjacent 复制存在的地方。我想消除差距,所以要附加到上面。我在下面的表格中表示了这一点。数据的行大小不断变化。我们传统上使用 VBA,但我们现在使用 Python,必须更改这部分工作。

数据的作用:https://ibb.co/gwh0Hb

预期/我想要达到的目标:https://ibb.co/f08Dnb

以下倾向于删除重复项并将其放在一列中,但是旁边的重复项旁边的行不会被删除,并且列不会被追加。

下面的代码 -

import openpyxl
wb1 = openpyxl.load_workbook('C:/Users/Documents/dwa.xlsx')
ws1 = wb1.active # keep naming convention consistent
wb2 = openpyxl.load_workbook('C:/Users/Documents/123.xlsx')
ws2 = wb2.active # keep naming convention consistent
values = []
col_e = 6 # easier to remember
values = set() # no duplicates by default; faster 'in' searching
for row in ws1.iter_rows(row_offset=1): # if you have a header
    if row[col_e].value not in values:
        values.add(row[col_e].value)
    else:
        row[col_e].value = '', 
wb2.save('C:/Users/Documents/123.xlsx')

我已尝试添加 -

values.add(row[col_c].value) 以及其他列值,但是我还没有成功。

【问题讨论】:

    标签: python excel python-3.x openpyxl


    【解决方案1】:

    IIUC,这是使用pandas的解决方案:

    import pandas as pd
    df = pd.read_excel('remove_duplicates.xlsx')
    # Identifying duplicates only by column 'C4'
    # Further details https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html
    df.drop_duplicates(['C4'],keep='first', inplace=True)
    

    输入excel是这样的:

    输出将是这样的:

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2018-08-29
      • 1970-01-01
      相关资源
      最近更新 更多