Pandas:获取组中最多出现的字符串值

Mar*_*tra 4 python pandas

我有以下DataFrame:

item    response
1       A       
1       A       
1       B       
2       A       
2       A   
Run Code Online (Sandbox Code Playgroud)

我想添加一个对项目给出最多响应的列.这应该导致:

item    response  mostGivenResponse
1       A          A
1       A          A      
1       B          A       
2       C          C
2       C          C
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

df["responseCount"] = df.groupby(["ItemCode", "Response"])["Response"].transform("count")

df["mostGivenResponse"] = df.groupby(['ItemCode'])['responseCount'].transform(max)
Run Code Online (Sandbox Code Playgroud)

但是,大多数的响应现在都是响应的计数,而不是响应本身.

WeN*_*Ben 8

pd.Series.mode:

df.groupby('item').response.transform(pd.Series.mode)
Out[28]: 
0    A
1    A
2    A
3    C
4    C
Name: response, dtype: object
Run Code Online (Sandbox Code Playgroud)