【问题标题】:Python Pandas | Create separate lists for each of the columnsPython 熊猫 |为每一列创建单独的列表
【发布时间】:2018-07-26 00:57:16
【问题描述】:

我不知道如何使用 tolist 来实现以下。我有一个这样的数据框:

Param_1     Param_2     Param_3
-0.171321   0.0118587   -0.148752
1.93377     0.011752    1.9707
4.10144     0.0112963   4.06861
6.25064     0.0103071   5.83927

我想要的是为每一列创建单独的列表,列表名称是列标签。

我不想继续做:

Param_1 = df["Param_1"].values.tolist()

如果有办法做到这一点,请告诉我。谢谢。

【问题讨论】:

    标签: python list pandas dataframe tolist


    【解决方案1】:

    添加.T

    df.values.T.tolist()
    Out[465]: 
    [[-0.171321, 1.93377, 4.10144, 6.25064],
     [0.0118587, 0.011752, 0.011296299999999999, 0.0103071],
     [-0.148752, 1.9707, 4.06861, 5.83927]]
    

    或者我们可以创建dict

    {x:df[x].tolist() for x in df.columns}
    Out[489]: 
    {'Param_1': [-0.171321, 1.93377, 4.10144, 6.25064],
     'Param_2': [0.0118587, 0.011752, 0.011296299999999999, 0.0103071],
     'Param_3': [-0.148752, 1.9707, 4.06861, 5.83927]}
    

    或使用locals(不推荐,但似乎是您需要的)

    variables = locals()
    for key in df.columns:
        variables["{0}".format(key)]= df[key].tolist()
    Param_1
    Out[501]: [-0.171321, 1.93377, 4.10144, 6.25064]
    

    【讨论】:

      【解决方案2】:

      也可以agg

      >>> df.agg(tuple)
      
      Param_1               (-0.171321, 1.93377, 4.10144, 6.25064)
      Param_2    (0.0118587, 0.011752, 0.011296299999999999, 0....
      Param_3                (-0.148752, 1.9707, 4.06861, 5.83927)
      dtype: object
      

      如果真的需要lists

      df.agg(tuple).transform(list)
      

      【讨论】:

        【解决方案3】:

        如果你想dictionary以列名作为key,你可以试试:

        result = df.to_dict(orient='list')
        # result will be: 
        # {'Param_2': [0.0118587, 0.011752, 0.011296299999999999, 0.0103071], 
        #  'Param_1': [-0.171321, 1.93377, 4.10144, 6.25064], 
        #  'Param_3': [-0.148752, 1.9707, 4.06861, 5.83927]}
        

        你也可以使用as_matrix,它会返回numpyndarray,如下:

        result = df.as_matrix().T
        # result will be:
        # [[-0.171321   1.93377    4.10144    6.25064  ]
        #  [ 0.0118587  0.011752   0.0112963  0.0103071]
        #  [-0.148752   1.9707     4.06861    5.83927  ]]
        

        ndarray获取list

        result = df.as_matrix().T.tolist()
        

        【讨论】:

          猜你喜欢
          • 2021-04-06
          • 2020-12-27
          • 1970-01-01
          • 2019-11-05
          • 1970-01-01
          • 2021-04-13
          • 1970-01-01
          • 2019-03-27
          • 2017-08-27
          相关资源
          最近更新 更多