如何将"variable"数据帧的值转换为新值



我在python中使用pandas模块。在我的脚本中,我试图获取数据帧的每个值并在另一个数据帧中转换它们,每个值都替换为数字 1(n 乘以数字的范围(,例如:

             A           B    
a            1           2             
b            2           3          

自:

             A           B           
a            1           1             
a                        1 
b            1           1
b            1           1
b                        1

问题是:这些不是修复值。我希望脚本获得我创建的"模型"并输出类似于上述结果的内容。否则,数据帧可以有 1、2、3...30 列,与行相同。

这是一个基于标准 2D 列表的解决方案。适应熊猫的数据帧很简单:

lst = [['a',1,2,2], ['b',2,3,2], ['c',4,0,2]]
table = []
for cols in lst:
    name, size = cols[0], max(cols[1:])
    row = [[1]*col + [0]*(size-col) for col in cols[1:]]
    table.extend(list(zip([name]*size, *row)))

这是table的最终内容

>>> from pprint import pprint
>>> pprint(table)
[('a', 1, 1, 1),
 ('a', 0, 1, 1),
 ('b', 1, 1, 1),
 ('b', 1, 1, 1),
 ('b', 0, 1, 0),
 ('c', 1, 0, 1),
 ('c', 1, 0, 1),
 ('c', 1, 0, 0),
 ('c', 1, 0, 0)]

最新更新