首页 > 解决方案 > Groupby 和 agg 与 diff 一起使用时产生 NaN

问题描述

我有一个像这样的索引数据集

np.random.seed(1)
df = pd.DataFrame({'A': [1, 1, 2, 2],
                   'B': [1, 2, 3, 4],
                    'C': np.random.randn(4)}, 
                  index = [5,242,12,634])

现在我正在尝试按组来区分C

df.groupby('A').agg('diff')

这给了我输出

    B   C
5   NaN NaN
242 1.0 -2.492028
12  NaN NaN
634 1.0 -0.455332

我试图得到一个只有 2 行的结果数据框,其中包含这样的差异

B   C   
1.0 -2.492028
1.0 -0.455332

我怎样才能做到这一点?

标签: pythonpandasdataframe

解决方案


Firstdiff不是一个 agg 函数,它将返回与原始数据帧相同的输出长度,如果您想要没有NaN我们应该做的差异dropna

out = df.groupby('A').diff().dropna()

推荐阅读