Eli*_*eph 1 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
Run Code Online (Sandbox Code Playgroud)
当我运行时,fun(list_1)我应该得到4个数据帧:
1
data_frame_1
2
data_frame_2
3
data_frame_3
4
data_frame_4
Run Code Online (Sandbox Code Playgroud)
但我只获得了第一个值的输出.
1
data_frame_1
Run Code Online (Sandbox Code Playgroud)
那我该怎么改变我的功能呢.
当你return从这个功能,它结束了.
你不在功能之中就是这样.
您可以使用发电机来达到您想要的效果,或者您可以返回a tuple或a 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"
Run Code Online (Sandbox Code Playgroud)
这将每次打印该值,并返回您的数据框.但是它返回一个生成器,所以你必须多次调用该函数.你不能真正做的是将数据帧放在循环中,而不想将它们存储在列表中或同化或只调用一次函数.
列表的简单方法可以是:
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
Run Code Online (Sandbox Code Playgroud)
作为参考,我建议你看一下"yield"关键字在Python中的作用是什么? 这可能对你有意思.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |