我应该怎样改变我的功能

时间:2015-03-10 08:44:11

标签: python python-2.7 pandas

list_1  =[1, 2, 3, 4 ]

def fun(list_1):
    for each value in list1:
        # perform some operation and create a new data frame(pandas) for each value in the list
        # so in total I should get 4 data frames.
        print each_value

        return new_data_frame

当我运行fun(list_1)时,我应该得到4个数据框:

1
data_frame_1

2
data_frame_2

3
data_frame_3

4
data_frame_4

但我只获得了第一个值的输出。

1
data_frame_1

所以我应该在功能上做些什么改变。

1 个答案:

答案 0 :(得分:5)

当你return来自该功能时,它结束了。
你已经退出了这个职能部门。

您可以使用a generator来达到您想要的效果,也可以返回tuplelist


使用发电机:

def fun(list_1):
    for each_value in list_1:
        # perform some operation and create a new data frame(pandas) named "new_data_frame" for each value in the list
        print each_value
        yield new_data_frame

for data_frame in fun(list_1):
    # Do something with the data frame "data_frame"

这将每次打印该值,并返回您的数据框。 但是它返回一个生成器,所以你必须多次调用该函数。你不能真正做的是将数据帧放在一个循环中,而不想将它们存储在列表中或同化或仅调用该函数一次。


列表的简单方法可能是:

def fun(list_1):
    data_frames = []
    for each_value in list1:
        # perform some operation and create a new data frame(pandas) named "new_data_frame" for each value in the list
        print each_value
        data_frames.append(new_data_frame)

return data_frames

供参考,我建议您查看What does the "yield" keyword do in Python? 这可能对你有意思。