我想使用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]
答案 0 :(得分:2)
这可以通过np.sort
使用apply
完成,检查:When should I ever want to use pandas apply() in my code?
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
答案 1 :(得分:0)
这就像一种魅力:
df.set_index(['ID']).agg(list,axis=1).reset_index()