Отображение столбцов в одном и том же кадре - PullRequest
0 голосов
/ 21 мая 2018
Students  Score1  Students  Score2  Students  Score3
   A        50       B        88       A        48
   B        40       A        76       C        47
   C        28       C        74       B        40

Как превратить указанный выше кадр данных в следующий формат:

Students  Score1  Score2  Score3
   A        50      76      48
   B        40      88      40
   C        28      74      47

Единственный известный мне подход - применить iloc к ним в отдельном кадре данных, а затем соединить их вместе илиЕсть ли один способ сделать это?* Python читает дублирующиеся столбцы как Студенты, Студенты.1, Студенты.2 и т. Д.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Использование pd.concat с pd.DataFrame.iloc для итерации ваших столбцов попарно:

res = pd.concat([df.iloc[:, 2*i:2*i+2].set_index('Students') for i in \
                 range(int(len(df.columns) / 3 + 1))], axis=1)

print(res)

   Score1  Score2  Score3
A      50      76      48
B      40      88      40
C      28      74      47

Вы можете повысить индекс до решения столбца à la @ piRSquared:

print(res.rename_axis('Students').reset_index('Students'))

  Students  Score1  Score2  Score3
0        A      50      76      48
1        B      40      88      40
2        C      28      74      47
0 голосов
/ 21 мая 2018

С concat и groupby

pd.concat([
    d.set_index('Students')
    for _, d in df.groupby(np.arange(df.shape[1]) // 2, axis=1)
], axis=1)

   Score1  Score2  Score3
A      50      76      48
B      40      88      40
C      28      74      47

pd.concat([
    d.set_index('Students')
    for _, d in df.groupby(np.arange(df.shape[1]) // 2, axis=1)
], axis=1).rename_axis('Students').reset_index()

  Students  Score1  Score2  Score3
0        A      50      76      48
1        B      40      88      40
2        C      28      74      47
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...