应用功能和系列对象

时间:2019-03-06 15:19:01

标签: python pandas anaconda

我想使用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] 

2 个答案:

答案 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()