Я не смог найти прямую функцию, которая выполняет объединение ячеек с одинаковыми значениями, поэтому вместо этого я написал код, который делает это.
print(df)
column1 column2 column3 column4 column5
0 r_n_1 r_s_1 r_n_2 r_s_3 r_n_3
1 r_n_1 r_s_1 r_n_4 r_s_4 r_n_5
2 r_n_1 r_s_1 r_n_6 r_s_5 r_n_7
3 r_n_1 r_s_1 r_n_6 r_s_6 r_n_9
4 r_n_10 r_s_7 r_n_11 r_s_8 r_n_12
5 r_n_10 r_s_9 r_n_11 r_s_10 r_n_13
Это df, с которым я должен работать. Но чтобы сделать то, что я сделал, я повторил один раз, чтобы проверить, какие значения похожи, и заменил на -
. Причина, по которой я не сделал это NoneType
, заключалась в том, что ячейки под таблицей имеют значение NoneType
, поэтому дальнейшая часть кода будет повторяться бесконечно. То, что я сделал, было:
for i in df.columns:
for j in range(len(df[i])):
for k in range(j+1,len(df[i])):
if df[i][j]== df[i][k]:
df[i][k]='-'
Так что теперь мой df
выглядит примерно так:
print(df)
column1 column2 column3 column4 column5
0 r_n_1 r_s_1 r_n_2 r_s_3 r_n_3
1 - - r_n_4 r_s_4 r_n_5
2 - - r_n_6 r_s_5 r_n_7
3 - - - r_s_6 r_n_9
4 r_n_10 r_s_7 r_n_11 r_s_8 r_n_12
5 - r_s_9 - r_s_10 r_n_13
Теперь, когда у меня есть все уникальные значения во фрейме данных, я проверю, является ли элемент df
допустимым входным значением или -
. И ячейки -
будут объединены с его верхним значением. Я сделал это:
from openpyxl.workbook import Workbook
exportPath = r'C:\Users\T01144\Desktop\PythonExport.xlsx'
wb= Workbook()
ws=wb.active
rowInd=1
colInd=1
colList=['-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I'] # Continue if there are more columns
for i in df.columns:
for j in range(0,len(df[i])):
if(df[i][j]!='-'):
ws.cell(row=rowInd,column=colInd,value=df[i][j])
else:
count=0
for l in range(j+1,len(df[i])):
count+=1
if df[i][l]!='-':
count-=1
break
ws.merge_cells(str(str(colList[colInd]+str(rowInd-1))+":"+str(colList[colInd]+str(rowInd+count))))
rowInd+=1
colInd+=1
rowInd=1
Вывод, который у меня сейчас есть:
Весь код можно найти здесь .
ПРИМЕЧАНИЕ. Некоторые из вас могут получить эту ошибку после создания Excel:
Мы обнаружили проблему с некоторым содержимым в PythonExport.xlsx. Вы хотите, чтобы мы попытались восстановить столько, сколько мы можем? Если вы доверяете источнику этой книги, нажмите Да.
Просто игнорируйте эту ошибку и нажмите Да.