有一个类似的数据帧
df
组 | 数据 | 其他 |
---|---|---|
A | 1 | |
A | 2 | |
A | 3 | d|
A | 4 | |
A | 5 | d|
B | 100 | a//tr>|
B | 200 | 为[/tr>|
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)