Python 如何在lambda函数中使用timeseries索引

Python 如何在lambda函数中使用timeseries索引,python,pandas,datetime,time-series,Python,Pandas,Datetime,Time Series,我需要在lambda函数中使用timeseries的索引位置。lambda函数需要在转换中使用索引的位置。与此问题中提出的问题类似:但使用DateTime作为索引的pandas数据帧 我想从lambda函数中得到的方程是: 时间序列x索引中的值位置(1/时间序列长度)+值 此函数的作用是向时间序列添加线性趋势。我期望的输出在时间序列结束时相对于第一个时间步增加+1 到目前为止,我的想法是结合使用枚举和get_loc函数,如下所示: dates = pd.date_range(start='201

我需要在lambda函数中使用timeseries的索引位置。lambda函数需要在转换中使用索引的位置。与此问题中提出的问题类似:但使用DateTime作为索引的pandas数据帧

我想从lambda函数中得到的方程是:

时间序列x索引中的值位置(1/时间序列长度)+值

此函数的作用是向时间序列添加线性趋势。我期望的输出在时间序列结束时相对于第一个时间步增加+1

到目前为止,我的想法是结合使用枚举和get_loc函数,如下所示:

dates = pd.date_range(start='2018-10-01', end='2019-09-30', freq='D')
df = pd.DataFrame(np.random.randint(0,100,size=(365, 4)), columns=list('ABCD'), index=dates)

a = df['A']
test = map(lambda (idx, val): df.index.get_loc(idx) * (1/len(df.index)) + val, enumerate(a))
我收到以下错误消息:

File "<ipython-input-6-8fb927ed0ecd>", line 8
test = map(lambda (idx, val): df.index.get_loc(idx) * (1/len(df.index)) + val, enumerate(a))
                  ^
SyntaxError: invalid syntax
文件“”,第8行
test=map(lambda(idx,val):df.index.get_loc(idx)*(1/len(df.index))+val,枚举(a))
^
SyntaxError:无效语法

IIUC您可以首先计算时间序列x索引中的值(1/时间序列长度),然后将值添加到
df
中,如下所示

将熊猫作为pd导入
将numpy作为np导入
日期=pd.日期范围(开始时间=2018-10-01',期间=365)
df=pd.DataFrame(np.random.randint(0100,size=(365,4)),
列=列表('ABCD'),索引=日期)
#您不能在df中使用索引,因为它们是datetime
x=np.arange(len(df))*1/len(df)
#你需要这个技巧,因为广播不起作用
#在这种情况下
res=np.array([x]*4).T+df.values

嗨,AlexaB,你介意分享一个吗?我已经用我希望的mcve更新了!你能发布预期的输出吗?你想计算每一列的公式吗?嗨@AlexaB,我的答案有用吗?嗨rpanai。我在理解您的最后一行代码时遇到了一点问题(我是新手!)。在推动我使用numpy的意义上,它是有用的。最后,我使用了下面的代码,这与您的代码没有什么不同。a=df['a']a+(1*np.arange(1,a.shape[0]+1))/a.shape