Python lambda多个时间段

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_

我使用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_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