我想计算给定变量的累积计数。因此,我希望以下代码可以正常工作
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,但第二个则不是。 为什么?
答案 0 :(得分:0)
这似乎是一个未解决的问题。
请参见BUG: inconsistent return format of Dataframe group apply function。
一种解决方法可以是:
assert (result2.values == [0, 1, 2, 3, 4]).all()