Как добавить повторяющиеся значения индекса в столбцы с помощью Python? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть много повторяющихся значений индекса в определенной последовательности. Я хочу получить 1-е значение в моей индексной ячейке 'ID', и когда это значение повторяется, добавьте этот набор значений в следующий столбец. Здесь мои значения индекса повторяются 4 раза, поэтому выходные данные будут иметь 4 столбца, помеченных от i = 1,2,3,4 ... до N для N нет. повторяющихся наборов индексов.

Начальное значение ячейки индекса будет отличаться для других наборов данных, но значения будут повторяться в той же последовательности.

Пример набора данных: df

ID,1
7,0.060896109
10,0.384263675
27,0.780060081
43,0.583200572
57,0.139564176
73,0.595220898
91,0.828783841
7,0.39920022
10,0.157306146
27,0.29750421
43,0.742234942
57,0.971849921
73,0.346905033
91,0.996723279
7,0.192197827
10,0.922323942
27,0.033304593
43,0.462253505
57,0.282632609
73,0.553047118
91,0.07678817
7,0.428707324
10,0.250935035
27,0.529861617
43,0.982468147
57,0.473807591
73,0.340980584
91,0.436675534

in

Ожидаемый выходной образец:

ID,1,2,3,4
7,0.060896109,0.39920022,0.192197827,0.428707324
10,0.384263675,0.157306146,0.922323942,0.250935035
27,0.780060081,0.29750421,0.033304593,0.529861617
43,0.583200572,0.742234942,0.462253505,0.982468147
57,0.139564176,0.971849921,0.282632609,0.473807591
73,0.595220898,0.346905033,0.553047118,0.340980584
91,0.828783841,0.996723279,0.07678817,0.436675534

out

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Вы можете использовать pd.pivot_table с небольшой дополнительной работой над столбцами:

pd.pivot_table(data=df, index='ID', columns=df.groupby('ID').cumcount(), values='1')

       0         1         2         3
ID                                        
7   0.060896  0.399200  0.192198  0.428707
10  0.384264  0.157306  0.922324  0.250935
27  0.780060  0.297504  0.033305  0.529862
43  0.583201  0.742235  0.462254  0.982468
57  0.139564  0.971850  0.282633  0.473808
73  0.595221  0.346905  0.553047  0.340981
91  0.828784  0.996723  0.076788  0.436676
2 голосов
/ 30 сентября 2019

Использовать DataFrame.pivot с вспомогательным столбцом, созданным сравнением по первому столбцу с совокупным sum:

df = df.assign(g=np.cumsum(df.index == df.index[0])).pivot(columns='g',values='1')
print (df)
g          1         2         3         4
ID                                        
7   0.060896  0.399200  0.192198  0.428707
10  0.384264  0.157306  0.922324  0.250935
27  0.780060  0.297504  0.033305  0.529862
43  0.583201  0.742235  0.462254  0.982468
57  0.139564  0.971850  0.282633  0.473808
73  0.595221  0.346905  0.553047  0.340981
91  0.828784  0.996723  0.076788  0.436676
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...