我怎样才能改变"变量的值?#34; DataFrame成新的

时间:2018-03-20 03:40:08

标签: python pandas dictionary dataframe

我在python中使用pandas模块。在我的脚本中,我试图获取DataFrame的每个值并将它们转换为另一个DataFrame,每个值都被数字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

问题是:这些都没有修复价值。我希望脚本得到一个"模型"由我创建并输出类似上述结果的内容。否则,DataFrame可以有1,2,3 ... 30列,与行相同。

1 个答案:

答案 0 :(得分:0)

这是基于标准2D列表的解决方案。适应大熊猫的DataFrame非常简单:

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)]