代码之家  ›  专栏  ›  技术社区  ›  agenis

从panda数据帧创建pd.Series列表

  •  1
  • agenis  · 技术社区  · 7 年前

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

    我想这个问题可能已经得到了回答,但我找不到。。。如果有实现此转换的功能或方法 data.Frame=>pd系列产品清单

    一些代码用两列来显示我想要的输出,但我的用例有几十列,因此我无法手动编写:

    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]
    

    谢谢你的帮助

    2 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    使用列表理解:

    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 to_dict(orient='series') 并获取 dict ,但应在中更改顺序 python under 3.6

    desired_output = list(mydf[my_list_of_columns].to_dict(orient='series').values())
    
        2
  •  1
  •   Uwe Ziegenhagen    7 年前

    像这样的?

    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)