假设输入数据集:
test1 = [[0,7,50], [0,3,51], [0,3,45], [1,5,50],[1,0,50],[2,6,50]]
df_test = pd.DataFrame(test1, columns=['A','B','C'])
对应于:
A B C
0 0 7 50
1 0 3 51
2 0 3 45
3 1 5 50
4 1 0 50
5 2 6 50
我想获得按'A'分组的数据集,以及每个组中'B'最常见的值和该值的出现次数:
A most_freq freq
0 3 2
1 5 1
2 6 1
我可以使用以下方法获取前两列:
grouped = df_test.groupby("A")
out_df = pd.DataFrame(index=grouped.groups.keys())
out_df['most_freq'] = df_test.groupby('A')['B'].apply(lambda x: x.value_counts().idxmax())
但是我在最后一列遇到了问题。 另外:有没有更快的方法,不需要使用“apply”?这种解决方案在处理更大的输入时不具有可扩展性(我也尝试过dask)。
非常感谢!