【问题标题】:create a list of pd.Series from a panda DataFrame从 panda DataFrame 创建一个 pd.Series 列表
【发布时间】:2019-07-02 12:30:28
【问题描述】:

我有一个包含很多列的 DataFrame,以及我想传递给算法的列名列表。该算法要求我传入的参数不是数据框,而是一个列表,其中每个元素都是我的pd.Series 列之一。

我认为这个问题可能已经回答了,但我找不到...是否有实现这种转换的函数或方法 data.Frame => pd.Series 列表? p>

一些代码用两列显示我想要的输出,但我的用例如果有几十列,所以我不能手动编写它:

mydf = pd.DataFrame.from_dict({'a': {0: 1, 1: 2}, 'b': {0: 3, 1: 3}, 'c': {0: 10, 1: 3}})
my_list_of_columns=["a", "b"]
desired_output = [mydf.a, mydf.b]

感谢您的帮助

【问题讨论】:

    标签: python pandas list subset series


    【解决方案1】:

    使用列表理解:

    desired_output = [mydf[x] for x in my_list_of_columns]
    print (desired_output)
    [0    1
    1    2
    Name: a, dtype: int64, 0    3
    1    3
    Name: b, dtype: int64]
    

    或者用to_dict(orient='series')转换成to_dict,得到dict的值,但是python under 3.6中的顺序应该改变:

    desired_output = list(mydf[my_list_of_columns].to_dict(orient='series').values())
    

    【讨论】:

      【解决方案2】:

      这样的?

      import pandas as pd
      
      mydf = pd.DataFrame.from_dict({'a': {0: 1, 1: 2}, 'b': {0: 3, 1: 3}, 'c': {0: 10, 1: 3}})
      
      desired_output = []
      l = list(mydf)
      
      for i in l:
          desired_output.append(list(eval('mydf.' + i)))
      
      
      print(desired_output)
      

      【讨论】:

        猜你喜欢
        • 2020-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 2020-08-31
        • 2021-10-22
        • 2020-02-11
        • 2021-08-31
        相关资源
        最近更新 更多