pandas如何在分组数据的标准缩放器上应用fittransform



有一个类似的数据帧

df

dda//tr>为[/tr>
数据 其他
A 1
A 2
A 3
A 4
A 5
B 100
B 200
B 300 ab
B 400 ax
B 500广告

使用:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
def sc(row):
return scaler.fit_transform(row.values.reshape(-1,1))
df.groupby('group').agg(sc)

请注意,您的另一列不是数字,因此您不能对其应用标准缩放器。我用两个数字列尝试了上面的代码。

两个数字列的演示:

d = '''group    data    other
A   1   a
A   2   b
A   3   ad
A   4   aw
A   5   ad
B   100 ta
B   200 as
B   300 ab
B   400 ax
B   500 ad'''
data = [x.split('   ') for x in d.split('n') if x!='']
df = pd.DataFrame(data[1:], columns = data[0])
df['other'] = df['data']*2
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
def sc(row):
return scaler.fit_transform(row.values.reshape(-1,1))
df.groupby('group').agg(sc)

输出:

data    other
group       
A   [[-1.414213562373095], [-0.7071067811865475], ...   [[-1.4142135623730951], [-0.7071067811865476],...
B   [[-1.414213562373095], [-0.7071067811865475], ...   [[-1.4142135623730951], [-0.7071067811865476],...

基于评论:

df['new'] = df.groupby('group')['data'].apply(sc).explode().values.astype(float)

最新更新