我有一个包含很多列的DataFrame,以及要传递给算法的列名列表。该算法要求我传入的参数不是数据帧,而是一个列表,其中每个元素都是我的pd.Series
列之一。
我认为这个问题可能已经回答了,但我找不到...如果有实现此转换的函数或方法 data.Frame => pd.Series列表?>
一些代码用2列显示我想要的输出,但是如果用了很多则显示用例,所以我不能手动编写它:
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]
感谢您的帮助
答案 0 :(得分:2)
使用列表理解:
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())
答案 1 :(得分:1)
像这样吗?
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)