【问题标题】:pandas.Series.mode returns ndarray instead of single valuepandas.Series.mode 返回 ndarray 而不是单个值
【发布时间】: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)))

标签: pandas dataframe mode


【解决方案1】:

您可以explode 输出来获得重复的索引:

modes = df.groupby('key')['A'].agg(pd.Series.mode).explode()

输出:

key
0    A0
1    A1
2    A2
3    A3
3    A4
3    A5
Name: A, dtype: object

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-14
    • 2019-01-17
    • 1970-01-01
    • 2020-08-22
    • 2014-06-27
    • 2015-11-27
    • 2011-09-05
    • 1970-01-01
    相关资源
    最近更新 更多