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
所以我应该在功能上做些什么改变。
答案 0 :(得分:5)
当你return
来自该功能时,它结束了。
你已经退出了这个职能部门。
您可以使用a generator来达到您想要的效果,也可以返回tuple
或list
。
使用发电机:
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? 这可能对你有意思。