Нормализовать многозначный столбец - PullRequest
1 голос
/ 21 октября 2019

У меня есть такой набор данных:

data = {'Host': ['A','A','A', 'A'], 'Seq': ['0, 1, 2, 99',' 4, 5, 6', '999, 8', '100']}

df = pd.DataFrame(data)

Я хочу нормализовать все значения.

Сначала я перейду к этой форме:

host Seq
 A    0
 A    1
 A    2
 A    99
 A    4
 A    5
 A    6
 A    999
 A    8
 A    100

По этому коду:

df.join(df.pop('Seq')
                .str.split(',',expand=True)
                .stack()
                .reset_index(level=1, drop=True)
                .rename('Seq')).reset_index(drop=True)

После нормализации по StandartScaler:

df['Seq'] = scaler.fit_transform(np.array(df.Seq.values).reshape(-1, 1)).reshape(-1)

А теперь я не знаю, как вернуться к началу просмотра. Жду идей и комментариев

1 Ответ

3 голосов
/ 21 октября 2019

Предполагая, что вы не уничтожили информацию индекса из оригинала

d_ = df.assign(Seq=df.Seq.str.split(',\s*')).explode('Seq')

d_

  Host  Seq
0    A    0
0    A    1
0    A    2
0    A   99
1    A    4
1    A    5
1    A    6
2    A  999
2    A    8
3    A  100

Затем вы можете сгруппировать по индексу и 'Host' столбец

d_.groupby([d_.index, 'Host']).Seq.apply(', '.join).reset_index('Host')

  Host          Seq
0    A  0, 1, 2, 99
1    A      4, 5, 6
2    A       999, 8
3    A          100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...