从 panda DataFrame 创建一个 pd.Series 列表

Posted

技术标签:

【中文标题】从 panda DataFrame 创建一个 pd.Series 列表【英文标题】:create a list of pd.Series from a panda DataFrame 【发布时间】: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]

感谢您的帮助

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于从 panda DataFrame 创建一个 pd.Series 列表的主要内容,如果未能解决你的问题,请参考以下文章

从 Pandas DataFrame 创建时间序列

Pandas笔记 · DataFrame常用API参考

pandas操作速查表

Pandas笔记 · DataFrame常用API参考

Pandas笔记 · DataFrame常用API参考

pandas使用pd.MultiIndex.from_product函数和pd.MultiIndex.from_tuples函数创建复合索引dataframe数据实战