我有200多列的时间序列数据。我目前正在将每列标准化为[0,1]
范围内的df.apply(lambda x: (x-x.min())/(x.max()-x.min()))
。但这还不够。我还想让每个列在其自己的范围内进行标准化(例如,第1列:[0,1]
,第2列:[1,2]
,第3列:[2,3]
等。我怎样才能做到这一点?有没有办法让lambda函数获取它被调用的列的索引(我在文档中没有找到这样的东西)?
答案 0 :(得分:0)
为什么不这样做呢?
df = df.apply(lambda x: (x-x.min())/(x.max()-x.min()))
for ix, col in enumerate(df.columns.values):
df[col] = df[col]+ix
另一条路线并不是非常漂亮但功能同样如此:
df = df.apply(lambda x: (x-x.min())/(x.max()-x.min()))
df += pd.DataFrame([range(len(df.columns.values))]*len(df.index),columns=df.columns.values)