代码之家  ›  专栏  ›  技术社区  ›  Rodolphe LAMPE

当只有一个值groupedby时,pandas groupby

  •  3
  • Rodolphe LAMPE  · 技术社区  · 6 年前

    我要计算给定变量的累积计数。所以我希望下面的代码可以工作

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame.from_records({'x': [0, 1, 0, 1, 1]})
    df2 = pd.DataFrame.from_records({'x': [0, 0, 0, 0, 0]})
    
    result = df.groupby('x').apply(lambda x: pd.Series(np.arange(len(x)), index=x.index)).reset_index(level=0, drop=True).sort_index()
    assert (result == [0, 0, 1, 1, 2]).all()
    
    result2 = df2.groupby('x').apply(lambda x: pd.Series(np.arange(len(x)))).reset_index(level=0, drop=True).sort_index()
    assert (result2 == [0, 1, 2, 3, 4]).all()
    

    第一个断言为真,但不是第二个断言。 为什么?

    1 回复  |  直到 6 年前
        1
  •  0
  •   harvpan    6 年前

    这似乎是一个悬而未决的问题。

    参见 BUG: inconsistent return format of Dataframe group apply function .

    解决方法可以是:

    assert (result2.values == [0, 1, 2, 3, 4]).all()