Я хочу использовать функцию apply для сортировки каждой строки кадра данных df:
ID Student1 Student2 Student3
1 A B C
2 M E F
3 H A D
Код
import numpy as np
import pandas as pd
df = pd.DataFrame(data=np.array([[1, 'A', 'B', 'C'], [2, 'M', 'E', 'F'], [3, 'H', 'A', 'D']]), columns=['ID', 'Student1', 'Student2', 'Student3'])
df1 = df.apply(np.sort, axis = 1)
df1 — это фрейм данных, а не объект серии. Это выглядит так:
ID Student1 Student2 Student3
1 A B C
2 E F M
3 A D H
Как я могу получить следующий фрейм данных? Спасибо.
ID
1 [A, B, C]
2 [E, F, M]
3 [A, D, H]






Это можно сделать с помощью np.sortбез с помощью apply , проверьте: Когда я должен использовать pandas apply() в своем коде?
import numpy as np
df.iloc[:,1:]=np.sort(df.iloc[:,1:].values,1)
df
Out[463]:
ID Student1 Student2 Student3
0 1 A B C
1 2 E F M
2 3 A D H
потом
s = pd.Series(df.iloc[:,1:].values.tolist(),index=df.ID)
s
Out[466]:
ID
1 [A, B, C]
2 [E, F, M]
3 [A, D, H]
dtype: object
Это работает как шарм:
df.set_index(['ID']).agg(list,axis=1).reset_index()
Также, если на ваш вопрос был дан ответ ударом, пожалуйста, выберите один из них и примите благодарность.