数据帧,在groupby之后应用缩放器



我正试图在groupby之后将scaler应用于数据帧的列。

scaler = MinMaxScaler()
df = pd.DataFrame({'a':[1,2,3,4,5,], 'b':[10,20,30,40,50,], 'k':[False, True, False, True, False]})

for name, g in df.groupby('k'):
scaler = MinMaxScaler()
scaler.fit(g['a'].values[..., np.newaxis])

for col in ['a', 'b']:


new_v = scaler.transform(g[col].values[..., np.newaxis])[:, 0]
print(new_v)
g[col] = new_v

如何使操作实际改变df本身?

如何使操作实际更改df本身?

如果您无法使groupby.transform工作,请使用组的索引来过滤分配的左侧:

import pandas as pd
df = pd.DataFrame({'a':[1,2,3,4,5,],
'b':[10,20,30,40,50,],
'k':[False, True, False, True, False]})

for name, g in df.groupby('k'):
if name:
new_values = g / 23
else:
new_values = g + .99999
for col in ['a', 'b']:
df.loc[g.index,col] = new_values[col]

最新更新