【问题标题】:Convert pandas DataFrame into list of lists [duplicate]将 pandas DataFrame 转换为列表列表 [重复]
【发布时间】:2013-11-04 07:15:36
【问题描述】:

我有一个这样的熊猫数据框:

admit   gpa  gre  rank   
0  3.61  380     3  
1  3.67  660     3  
1  3.19  640     4  
0  2.93  520     4

现在我想获取 pandas 中的行列表,例如:

[[0,3.61,380,3], [1,3.67,660,3], [1,3.19,640,4], [0,2.93,520,4]]   

我该怎么做?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    有一个内置方法也是最快的方法,在.values np 数组上调用tolist

    df.values.tolist()
    
    [[0.0, 3.61, 380.0, 3.0],
     [1.0, 3.67, 660.0, 3.0],
     [1.0, 3.19, 640.0, 4.0],
     [0.0, 2.93, 520.0, 4.0]]
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      map(list, df.values)
      

      【讨论】:

      • 我会在这个答案中添加一些警告。在 Python 3 中,map() 返回一个迭代器,因此那里的答案变成了list(map(list, df.values)),因为存在更短的拼写df.values.tolist(),所以这是多余的。 (要注意的另一件事是,从 pandas 0.24.0(2018 年 1 月)开始,他们建议将 df.values 拼写为 df.to_numpy(),所以我想它变成了 df.to_numpy().tolist()。它确实明确表示 df.values给出一个解包的 numpy 对象,.tolist() 应该在 numpy 文档中查找。)
      【解决方案3】:

      编辑:as_matrix is deprecated since version 0.23.0

      您可以在数据框上使用内置的valuesto_numpy(推荐选项)方法:

      In [8]:
      df.to_numpy()
      
      Out[8]:
      array([[  0.9,   7. ,   5.2, ...,  13.3,  13.5,   8.9],
         [  0.9,   7. ,   5.2, ...,  13.3,  13.5,   8.9],
         [  0.8,   6.1,   5.4, ...,  15.9,  14.4,   8.6],
         ..., 
         [  0.2,   1.3,   2.3, ...,  16.1,  16.1,  10.8],
         [  0.2,   1.3,   2.4, ...,  16.5,  15.9,  11.4],
         [  0.2,   1.3,   2.4, ...,  16.5,  15.9,  11.4]])
      

      如果您明确想要列表而不是 numpy 数组,请添加 .tolist():

      df.to_numpy().tolist()
      

      【讨论】:

      • 请注意,该问题要求提供列表列表,因此如果多维数组不够好,则在末尾添加 .tolist() 即可完成。 df.to_numpy().tolist()
      猜你喜欢
      • 2021-03-01
      • 2019-11-28
      • 2013-02-13
      • 2017-08-15
      • 2014-01-05
      • 2021-11-28
      • 1970-01-01
      相关资源
      最近更新 更多