【发布时间】:2021-10-02 15:13:24
【问题描述】:
我有一个包含多个帐户的数据框,其中显示了不同模式的动物类别。如何识别具有多个模式的帐户?
例如,请注意账户 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])
有什么建议吗?非常感谢。
【问题讨论】:
-
给定数据框的预期输出是什么?
-
已更新,谢谢。
-
是选择随机模式还是真的是次要问题?
-
你删除了你的答案!我认为这是一个很好的。最终,我需要一个随机模式,因为我正在处理每次访问存在多个 ICD-10 代码,通常是相同类型(因此生成模式)。虽然它不是很常见(12% 的频率),但我想选择任何随机模式,而不是第一个字母模式,这样我的分类模型就不会偏向字母表的开头:p 那是很长的版本我的问题。感谢您的帮助!
-
@GabeVerzino 我未删除,但已删除,因为从措辞看来您想更多地关注确定哪些是重复的,我的回答并没有真正解决,但它确实成功返回一个随机模式,所以我会添加它,因为它很有用