如何在我的数据集中应用 MinMaxScaler?按 NUM(ID) 分组并针对每一列
How can I apply MinMaxScaler in my dataset? group by NUM(ID) and for each columns
Num Year 1 2 3 4 5 6 7 8 9 10 11 12
111 2009 0 0 667 584 343 245 0 0 231 742 0 482
111 2010 0 10 624 4 143 445 20 991 0 742 0 482
112 2008 .....
数据集是这样的。
Num, Year : Dataframe 中的多索引(pandas)
并且所需的输出是使用按 Num 分组的从 1 到 12 的列缩放数据。
所以我可以将每年的使用情况(每个月)与相同的 'Num'.
进行比较
print(df_pivot.groupby('Num')[1].apply(lambda x: MinMaxScaler().fit_transform(x.values.reshape(-1,1))))
print(df_pivot.groupby('Num')[1].apply(lambda x: MinMaxScaler().fit_transform(x.values.reshape(-1,1))).loc[11111])
########
First Output is :
11111 [[0.0], [0.0], [0.8012012012012012], [0.690210...
11112 [[0.5682020471740098], [0.5516243880729862], [...
11115 [[0.0], [0.0], [0.9999999999999999], [0.747932...
-----------------
Second Output is :
[[0. ]
[0.97836918]
[0.91226151]
[1. ]
[0.68939118]
[0.51707376]
[0.50893183]]
如果查看第一个输出,没有 Year 索引,只有 Num 索引。
因此结果以 pandas.Series 的形式返回,但这不是所需的输出。
有人可以帮忙获取数据吗??
11111 2010 0.0 0.3 0.4 1.0 0.5 ....
11111 2011 0.8 ....
11111 2012 0.2 ....
....
而不是:
df_pivot.groupby('Num')[1]
你必须写:
df_pivot.groupby(['Num','Year'])
例如:
print(df_pivot.groupby(['Num','Year']).apply(lambda x: MinMaxScaler().fit_transform(x.values.reshape(-1,1)))))
Num Year 1 2 3 4 5 6 7 8 9 10 11 12
111 2009 0 0 667 584 343 245 0 0 231 742 0 482
111 2010 0 10 624 4 143 445 20 991 0 742 0 482
112 2008 .....
数据集是这样的。 Num, Year : Dataframe 中的多索引(pandas)
并且所需的输出是使用按 Num 分组的从 1 到 12 的列缩放数据。 所以我可以将每年的使用情况(每个月)与相同的 'Num'.
进行比较print(df_pivot.groupby('Num')[1].apply(lambda x: MinMaxScaler().fit_transform(x.values.reshape(-1,1))))
print(df_pivot.groupby('Num')[1].apply(lambda x: MinMaxScaler().fit_transform(x.values.reshape(-1,1))).loc[11111])
########
First Output is :
11111 [[0.0], [0.0], [0.8012012012012012], [0.690210...
11112 [[0.5682020471740098], [0.5516243880729862], [...
11115 [[0.0], [0.0], [0.9999999999999999], [0.747932...
-----------------
Second Output is :
[[0. ]
[0.97836918]
[0.91226151]
[1. ]
[0.68939118]
[0.51707376]
[0.50893183]]
如果查看第一个输出,没有 Year 索引,只有 Num 索引。 因此结果以 pandas.Series 的形式返回,但这不是所需的输出。
有人可以帮忙获取数据吗??
11111 2010 0.0 0.3 0.4 1.0 0.5 ....
11111 2011 0.8 ....
11111 2012 0.2 ....
....
而不是:
df_pivot.groupby('Num')[1]
你必须写:
df_pivot.groupby(['Num','Year'])
例如:
print(df_pivot.groupby(['Num','Year']).apply(lambda x: MinMaxScaler().fit_transform(x.values.reshape(-1,1)))))