python - Python中多个帐户的多种模式
问题描述
我有几个帐户的数据框,显示不同的动物类别模式。如何识别具有 1 种以上模式的帐户?
例如,注意账户 3 只有一种模式(即“狗”),但账户 1、2 和 4 有多种模式(即不止一种模式)。
test = pd.DataFrame({'account':[1,1,1,2,2,2,2,3,3,3,3,4,4,4,4],
'category':['cat','dog','rabbit','cat','cat','dog','dog','dog','dog','dog','rabbit','rabbit','cat','cat','rabbit']})
我正在寻找的预期输出将是这样的:
pd.DataFrame({'account':[1,2,4],'modes':[3,2,2]})
其次,我尝试为所有具有多种模式的帐户采用任何随机最高模式。我想出了以下代码,但是,这仅返回每个帐户的第一个(字母)模式。我的直觉告诉我可以在iloc
下面的括号内写一些东西,也许是一个介于 0 和模式总数之间的随机数组,但我无法完全到达那里。
test.groupby('account')['category'].agg(lambda x: x.mode(dropna=False).iloc[0])
有什么建议么?非常感谢。
解决方案
您可以为此使用 numpy.random.choice
test.groupby('account')['category'].agg(
lambda x: np.random.choice(x.mode(dropna=False)))
推荐阅读
- java - 为什么我有时会得到 java.net.SocketException: Socket closed on multithreaded Server
- python - 在从 crontab 调用的 python 脚本中执行 bash 命令
- javascript - 用不同的图像计算矩形的面积
- ssh - 关于ssh远程脚本执行的问题
- firebase - 颤振推送通知唤醒终止的应用程序
- c - 无法识别 DLL 文件格式
- r - 按模式子集字符向量
- python - 相同大小的数据框比较
- c# - 如何从 C# 中的长期 HTTP 连接接收实时数据?
- github - 如何使 git fork 保持最新状态