【问题标题】:How to generate a list from a pandas DataFrame with the column name and column values?如何从带有列名和列值的 pandas DataFrame 生成列表?
【发布时间】:2012-08-02 10:15:07
【问题描述】:

我有一个看起来像这样的 pandas 数据框对象:

   one  two  three  four  five
0    1    2      3     4     5
1    1    1      1     1     1

我想生成一个列表对象列表,其中第一项是列标签,其余列表值是列数据值:

nested_list = [['one', 1, 1]
               ['two', 2, 1]
               ['three', 3, 1]
               ['four', 4, 1]
               ['five', 5, 1]]

我该怎么做?感谢您的帮助。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我知道的老问题,但这对我来说比其他答案更有意义。

    如果这是您的数据框:

    df = pd.DataFrame({'one': [1, 1], 'three': [3, 1], 'four': [4, 1],
               'five': [5, 1], 'two': [2, 1]},
              columns=['one', 'two', 'three', 'four', 'five'])
    

    这样做:

    df.T.reset_index().values.tolist()
    

    结果

    [['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]]
    

    【讨论】:

      【解决方案2】:

      严格来说,如果您想要嵌套列表(而不是元组列表),您可以这样做

      df.values.tolist()
      

      因为 df.values 是一个 numpy 数组。这将为您提供所要求的列表列表:

      [[0.0001313652121930252, 3.5915356549999985e-05], 
       [3.5915356549999985e-05, 0.00011634321240684215]]
      

      【讨论】:

        【解决方案3】:

        @BrenBarn 上面的答案产生了一个元组列表,而不是问题中的列表列表。我特别需要一个列表列表,以便能够使用 DataNitro 将数据帧写入电子表格。用列表理解修改了上面的例子:

        [list(x) for x in dt.T.itertuples()]
        

        这会根据需要产生结果

        【讨论】:

          【解决方案4】:

          我的天真的方法是使用带有 'll' 作为列表列表和 l 作为单个列表的 iteritems。

          df = DataFrame({'one':[1,1], 'two':[2,1], 'three':[3,1], 'four':[3,1] })
          
          ll = []
          
          for idx,row in df.iteritems():
              l = row.values.tolist()
              l.insert(0,idx)
              ll.append(l)
          

          【讨论】:

            【解决方案5】:

            最简单的方法可能是list(dt.T.itertuples())(其中dt 是您的数据框)。这会生成一个元组列表。

            【讨论】:

            • 谢谢!我不知道 itertuples()。
            • 我也没有意识到 itertuples 在那里...... - 优雅 +1
            • 创建元组列表而不是列表列表
            猜你喜欢
            • 1970-01-01
            • 2021-08-31
            • 1970-01-01
            • 2018-01-10
            • 2017-08-26
            • 2019-08-31
            • 2020-12-26
            • 2021-10-24
            • 2021-12-06
            相关资源
            最近更新 更多