【发布时间】:2022-02-15 22:33:58
【问题描述】:
我需要从 Series.mode 函数中获取单个值的 pd.Series。 示例代码:
df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5'],
'key': [0, 1, 2, 3, 3, 3]})
modes = df.groupby('key')['A'].agg(pd.Series.mode)
key A
0 A0
1 A1
2 A2
3 ['A3' 'A4' 'A5']
问题是第 3 行。它返回 numpy.ndarray。 我应该如何修改我的脚本以在所有行中获取单个值。 取A3、A4、A5中的任意一个对我来说很方便。
【问题讨论】:
-
如果你并不真正关心在 ties 的情况下是哪个值,
mode本质上是一个 groupby + size + sort + drop_duplicates:stackoverflow.com/questions/68533960/… -
是的,这段代码绝对对我有帮助! test.groupby('account')['category'].agg( lambda x: np.random.choice(x.mode(dropna=False)))