Python如何索引后按列输出

img

如图,如何把左边输出到右边? 能将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列

img

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