Python:如何在行和列的值之间创建对应矩阵?

Python:如何在行和列的值之间创建对应矩阵?,第1张

概述我需要在excel中编写,我需要根据组和名称之间的对应关系来知道在哪里写’x’,所以我需要一个结构来保存组名和corespondent列和行 n1 – 在第1行 n2 – 在第2行 A(组名) – 在第2列 B(组名) – 在第3栏 c-在第4栏 D – 在第5栏 我必须在矩阵中设置用户和组之间的对应关系,并写入excel.工作数据: Groups = A,B,C, D,E, F ...Name 我需要在excel中编写,我需要根据组和名称之间的对应关系来知道在哪里写’x’,所以我需要一个结构来保存组名和corespondent列和行

n1 – 在第1行
n2 – 在第2行

A(组名) – 在第2列
B(组名) – 在第3栏
c-在第4栏
D – 在第5栏

我必须在矩阵中设置用户和组之间的对应关系,并写入excel.工作数据:

Groups = A,B,C,D,E,F ...name  =  N1,N2,N3,N4 .....N1 => A,FN2= B,DN3= A,F

预期的结果是:

A  B  C   D  E  FN1  x     x   x     xN2     x  x   xN3  x            x  xN1,N3 - are on rowsA,c,D  - are on columns

我需要在excel中编写,所以我需要一个结构来保存组名和corespondent列和行

N1 - is on row 1N2 - is on row 2A(group name) - is on column 2B(group name)  - is on column 3C is on column 4D  is on column 5

例:

for N1 I need to write on (row1,col2),(row1,column4),column5),column7)for N2 I need to write on (row2,col3),(row2,column5)for N3 I need to write on (row3,column3),column6),column7)

我从db / csv文件中逐个接收每个用户的数据.我一开始并不知道所有的组,我只是在我检查之后在列上添加了唯一的组,而不是为之前的用户添加的.

如果一个组是新的,尚未出现,我将添加一个包含组名的新列.如果存在,我检查列上的组的位置,并在行中写入x.

我尝试使用2个列表或2个词典,但第一行的对应关系无法正确设置.

for a in b..... if group_name not in groups_pos.items():        groups_pos[col_pos] = group_name        name_group[row_pos] = group_name        col_pos += 1   row_pos += 1......for col,value in groups_pos.items():    sheet.cell(row=1,column=2+col).value = value    for row,value_p in groups_pos.items():      sheet.cell(row=row,column=2+col).value = 'x'`
解决方法 由于未使用库,上游/下游代码或所需的实现,因此这里是纯python实现

groups = ['A','C','D','F','B','A','E','F'] # ...names = ['N1','N1','N2','N3','N3'] # ...row_names,col_names,data_table = [],[],[[]]# for loop used to simulate getting data one at a timefor name,group in zip(names,groups):    # see if that name exists in table    if name in row_names:        row = row_names.index(name)    else:        row_names.append(name)        row = len(row_names)-1        # add new row of empty strings        data_table.append(['' for _ in xrange(len(data_table[0]))])    # see if that group exists in table    if group in col_names:        col = col_names.index(group)    else:        col_names.append(group)        col = len(col_names)-1        # add empty string to every column        for i,r in enumerate(data_table):            data_table[i].append('')    # add to table    data_table[row][col] = 'x'# displayprint 'table:'print '  ','    '.join(col_names)for rowname,row in zip(row_names,data_table):    print rowname,'    '.join([' ' if x == '' else x for x in row])

产量

table:   A    C    D    F    B    EN1 x    x    x    x          N2      x    x         x     N3 x              x         x

一旦所有数据都在data_table中,请执行excel写入,IDk导入的库是什么…所以此部分未经测试:

# add col headingsfor c,col_name in enumerate(col_names):    sheet.cell(row=1,column=c+2).value = col_namefor r,row in enumerate(data_tables):    # add row heading on first column    sheet.cell(row=r+2,column=1).value = row_names[r]    # add each column to row    for c,col in enumerate(row):        sheet.cell(row=r+2,column=c+2).value = data_table[r][c]

或者您可以使用像pandas这样的库!如果您已安装或可以获得它,2D数据更改将更容易.

总结

以上是内存溢出为你收集整理的Python:如何在行和列的值之间创建对应矩阵?全部内容,希望文章能够帮你解决Python:如何在行和列的值之间创建对应矩阵?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存