Python lambda多个时间段
我使用Python中的TA Lib包开发了以下函数:Python lambda多个时间段,python,pandas,dataframe,Python,Pandas,Dataframe,我使用Python中的TA Lib包开发了以下函数: def adx(df): adx = ta.ADX(df['high'], df['low'], df['close'], timeperiod=2) return pd.DataFrame(adx) def calc_adx(df): ret_val = ta.ADX(row['high'], row['low'], row['close'], timeperiod=2) return ret_
def adx(df):
adx = ta.ADX(df['high'], df['low'], df['close'], timeperiod=2)
return pd.DataFrame(adx)
def calc_adx(df):
ret_val = ta.ADX(row['high'], row['low'], row['close'], timeperiod=2)
return ret_val
ticker_group = df.groupby('ticker')
subsets = []
for ticker, ticker_df in ticker_group:
ticker_df['adx'] = ta.ADX(ticker_df['high'], ticker_df['low'], ticker_df['close'], timeperiod=2)
subsets.append(ticker_df)
df = pd.concat(subsets)
但是,我现在希望使用多个时间段2,4,6,10
进行分析
我已尝试添加其他功能:
def adx_periods (df, weeks):
for weeks in weeks:
df['{}week_adx'.format(weeks)] = adx(df, weeks)
return df
periods = adx_periods(df, [2,4,6,10])
但这会因内部错误而失败。请帮忙
数据帧的摘录如下:
ticker date open high low close volume
0 A2M 2015-04-03 0.555 0.595 0.530 0.555 11.972594
1 A2M 2015-04-10 0.545 0.550 0.530 0.535 1.942575
2 A2M 2015-04-17 0.535 0.550 0.520 0.540 3.003353
3 A2M 2015-04-24 0.535 0.535 0.490 0.505 3.909057
4 A2M 2015-05-01 0.505 0.510 0.475 0.500 2.252260
5 A2M 2015-05-08 0.505 0.510 0.490 0.495 4.999979
6 A2M 2015-05-15 0.500 0.510 0.465 0.465 1.925071
7 A2M 2015-05-22 0.480 0.490 0.470 0.470 1.327491
8 A2M 2015-05-29 0.480 0.495 0.455 0.465 10.907722
9 A2M 2015-06-05 0.470 0.535 0.460 0.520 10.903146
10 A2M 2015-06-12 0.520 0.535 0.515 0.525 3.473838
11 A2M 2015-06-19 0.530 0.540 0.500 0.510 3.066124
12 A2M 2015-06-26 0.615 0.720 0.555 0.650 18.185325
13 A2M 2015-07-03 0.635 0.690 0.625 0.660 5.487445
14 A2M 2015-07-10 0.670 0.680 0.640 0.680 10.724293
15 A2M 2015-07-17 0.665 0.685 0.655 0.665 3.383546
16 A2M 2015-07-24 0.650 0.750 0.635 0.730 9.850991
17 A2M 2015-07-31 0.735 0.785 0.730 0.735 4.988930
18 A2M 2015-08-07 0.732 0.750 0.710 0.735 1.448889
19 A2M 2015-08-14 0.735 0.740 0.705 0.710 2.624986
更改您的
adx
def adx(df,p):
adx = ta.ADX(df['high'], df['low'], df['close'], timeperiod=p)
return pd.DataFrame(adx)
及
def adx_periods (df, weeks):
for week in weeks:
df['{}week_adx'.format(week)] = adx(df, week)
return df