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)