如图,如何把左边输出到右边? 能将B列数值相同的A值提取出来,并按照B值分列输出
import openpyxl
type_name = 'test4'
file_name_rd = type_name+'.xlsx'
wb = openpyxl.load_workbook(file_name_rd)
# 获取工作表名
names = wb.sheetnames
# 使用wb[name] 获取指定工作表
sheet1 = wb[names[0]]
maxRow1 = sheet1.max_row # 最大行数
cell = sheet1['B']
list = []
for i in cell:
if i.value not in list and i.value != 'B':
list.append(i.value)
n = 2
for k in range(0, len(list)):
sheet1.cell(1, 4+k).value = list[k]
for m in range(2, maxRow1+1):
if sheet1.cell(m, 2).value == list[k]:
sheet1.cell(n, 4+k).value = sheet1.cell(m, 1).value
n += 1
else:
n = 2
wb.save(file_name_rd)
print('over')
效果图,我填的是A,B列
import pandas as pd
data = [[8.79, 32.82],
[8.19, 32.82],
[3.79, 32.82],
[1.74, 32.82],
[8.79, 32.84],
[1.88, 32.84],
[8.79, 32.85],
[6.19, 32.85],
[1.59, 32.85],
[8.49, 32.86], ]
df = pd.DataFrame(data = data, columns = list('AB'))
gr = df.groupby(by = 'B')
dfNew = pd.DataFrame()
head = 64
heads = ''
for n, gp in gr:
head += 1
heads += chr(head)
gp.loc[-1] = [n, 0]
gp = gp.sort_index()
gp = gp.reset_index(drop = True)
dfNew = pd.concat([dfNew, gp['A']], axis = 1)
dfNew = dfNew.fillna(0)
dfNew = dfNew.set_axis(list(heads), axis = 1)
print(dfNew)
'''--result
A B C D
0 32.82 32.84 32.85 32.86
1 8.79 8.79 8.79 8.49
2 8.19 1.88 6.19 0.00
3 3.79 0.00 1.59 0.00
4 1.74 0.00 0.00 0.00'''
贴下 A, B 数据
用 openpyxl , 打开后,读K,L两列 , 按第2列排序,遍历, 从N列开始写数据 , 遇到列表第2列变动,列数+1