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
那么我应该在我的函数中更改什么。
请您参考如下方法:
当您从函数返回
时,它就结束了。
你超出了功能,仅此而已。
你可以使用 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? 您可能会感兴趣。