【问题标题】:How can i transform the values of a "variable" DataFrame into new ones如何将“变量”DataFrame 的值转换为新值
【发布时间】:2018-03-20 03:40:08
【问题描述】:

我正在使用 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 列,与行相同。

【问题讨论】:

    标签: python pandas dictionary dataframe


    【解决方案1】:

    这是一个基于标准 2D 列表的解决方案。适应 pandas 的 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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2018-05-30
      • 2023-03-30
      • 2017-05-25
      相关资源
      最近更新 更多