首页 > 解决方案 > 当只有一个值 groupedby 时,Pandas groupby

问题描述

我想计算给定变量的累积计数。所以我希望以下代码有效

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()

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

标签: pandaspandas-groupby

解决方案


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

请参阅BUG:Dataframe 组应用函数的返回格式不一致

解决方法可以是:

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

推荐阅读