Python 为什么只有print函数返回列表?

Python 为什么只有print函数返回列表?,python,pandas,indexing,return,printf,Python,Pandas,Indexing,Return,Printf,因此,我正在尝试制作一个资金流指数指示器,到目前为止,代码是: import pandas as pd import numpy as np import pandas_datareader as web import datetime as dt #get stock prices start = dt.datetime(2019, 12, 1) end = dt.datetime(2020, 1, 1) d = web.DataReader('AMD', 'yahoo', start, e

因此,我正在尝试制作一个资金流指数指示器,到目前为止,代码是:

import pandas as pd
import numpy as np
import pandas_datareader as web
import datetime as dt

#get stock prices
start = dt.datetime(2019, 12, 1)
end = dt.datetime(2020, 1, 1)
d = web.DataReader('AMD', 'yahoo', start, end)
pd.set_option('display.max_rows', 1000)

def Money_Flow_index(period = 5):
    d['typical_price'] = (d['High'] + d['Close'] + d['Low'])/3
    for i in reversed(range(len(d['typical_price']))):
        if i > 5:
            typical_price_dates = d['typical_price'][i-period:i]
            print(typical_price_dates)
Money_Flow_index()
我对python比较陌生,所以我可能不懂一些基本的东西。。尽管现在代码正在尝试索引出5个周期内每一增量数据集的调整收盘价。因此,当我按原样运行代码时,输出为:

Date
2019-12-23    45.160000
2019-12-24    46.306667
2019-12-26    46.533334
2019-12-27    46.346667
2019-12-30    45.449999
Name: typical_price, dtype: float64
Date
2019-12-20    43.889999
2019-12-23    45.160000
2019-12-24    46.306667
2019-12-26    46.533334
2019-12-27    46.346667
Name: typical_price, dtype: float64
Date
2019-12-19    42.923333
2019-12-20    43.889999
2019-12-23    45.160000
2019-12-24    46.306667
2019-12-26    46.533334
Name: typical_price, dtype: float64
Date
2019-12-18    42.533334
2019-12-19    42.923333
2019-12-20    43.889999
2019-12-23    45.160000
2019-12-24    46.306667
Name: typical_price, dtype: float64
Date
2019-12-17    42.676668
2019-12-18    42.533334
2019-12-19    42.923333
2019-12-20    43.889999
2019-12-23    45.160000
Name: typical_price, dtype: float64
Date
2019-12-16    42.353333
2019-12-17    42.676668
2019-12-18    42.533334
2019-12-19    42.923333
2019-12-20    43.889999
Name: typical_price, dtype: float64
Date
2019-12-13    41.720001
2019-12-16    42.353333
2019-12-17    42.676668
2019-12-18    42.533334
2019-12-19    42.923333
Name: typical_price, dtype: float64
Date
2019-12-12    41.486666
2019-12-13    41.720001
2019-12-16    42.353333
2019-12-17    42.676668
2019-12-18    42.533334
Name: typical_price, dtype: float64
Date
2019-12-11    39.373334
2019-12-12    41.486666
2019-12-13    41.720001
2019-12-16    42.353333
2019-12-17    42.676668
Name: typical_price, dtype: float64
Date
2019-12-10    39.329999
2019-12-11    39.373334
2019-12-12    41.486666
2019-12-13    41.720001
2019-12-16    42.353333
Name: typical_price, dtype: float64
Date
2019-12-09    39.226667
2019-12-10    39.329999
2019-12-11    39.373334
2019-12-12    41.486666
2019-12-13    41.720001
Name: typical_price, dtype: float64
Date
2019-12-06    39.793334
2019-12-09    39.226667
2019-12-10    39.329999
2019-12-11    39.373334
2019-12-12    41.486666
Name: typical_price, dtype: float64
Date
2019-12-05    39.796666
2019-12-06    39.793334
2019-12-09    39.226667
2019-12-10    39.329999
2019-12-11    39.373334
Name: typical_price, dtype: float64
Date
2019-12-04    39.546666
2019-12-05    39.796666
2019-12-06    39.793334
2019-12-09    39.226667
2019-12-10    39.329999
Name: typical_price, dtype: float64
Date
2019-12-03    38.326668
2019-12-04    39.546666
2019-12-05    39.796666
2019-12-06    39.793334
2019-12-09    39.226667
Name: typical_price, dtype: float64
这正是我想要的,但当我尝试返回(典型的价格日期)时,它只打印第一组:

Date
2019-12-23    45.160000
2019-12-24    46.306667
2019-12-26    46.533334
2019-12-27    46.346667
2019-12-30    45.449999
Name: typical_price, dtype: float64  
问题是当我试图访问
典型的价格日期时,它只显示第一个系列,而不是所有系列。例如,如果我想做以下事情:

typical_price = typical_price_dates
typical_volume = d['Volume']
d['money_flow_index'] = typical_price * typical_volume

它只访问第一个系列。那么基本上,我怎样才能使变量的典型价格日期等于所有系列,而不仅仅是一个系列。谢谢。

当您在代码中使用return时,循环只运行一次,并返回结果,然后您从函数中出来,之后就不会运行循环,您应该做的是每次将典型的价格日期附加到类似于python列表的东西上,如下所示

z=[]

import pandas as pd
import numpy as np
import pandas_datareader as web
import datetime as dt

#get stock prices
start = dt.datetime(2019, 12, 1)
end = dt.datetime(2020, 1, 1)
d = web.DataReader('AMD', 'yahoo', start, end)
pd.set_option('display.max_rows', 1000)

def Money_Flow_index(period = 5):
    d['typical_price'] = (d['High'] + d['Close'] + d['Low'])/3
    for i in reversed(range(len(d['typical_price']))):
        if i > 5:
            typical_price_dates = d['typical_price'][i-period:i]
            z.append(typical_price_dates)
Money_Flow_index()

for i in z:
    print(i)

当您在代码中使用return时,循环只运行一次,并返回结果,然后您从函数中出来,之后没有循环运行,您应该做的是每次将典型的价格日期附加到类似于python列表的内容中,如下所示

z=[]

import pandas as pd
import numpy as np
import pandas_datareader as web
import datetime as dt

#get stock prices
start = dt.datetime(2019, 12, 1)
end = dt.datetime(2020, 1, 1)
d = web.DataReader('AMD', 'yahoo', start, end)
pd.set_option('display.max_rows', 1000)

def Money_Flow_index(period = 5):
    d['typical_price'] = (d['High'] + d['Close'] + d['Low'])/3
    for i in reversed(range(len(d['typical_price']))):
        if i > 5:
            typical_price_dates = d['typical_price'][i-period:i]
            z.append(typical_price_dates)
Money_Flow_index()

for i in z:
    print(i)