Python Groupby和agg与diff一起使用时会产生NAN

Python Groupby和agg与diff一起使用时会产生NAN,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个这样的索引数据集 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') 这给了我输

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

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
我试图得到一个只有两行的结果数据帧,其中包含如下的差异

B   C   
1.0 -2.492028
1.0 -0.455332

如何实现这一点?

首先
diff
不是一个agg函数,它将返回与原始数据帧相同的输出长度,如果您希望diff没有
NaN
我们应该做
dropna

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

df.groupby('A').agg('diff').dropna()
df.groupby('A').agg(np.subtract.reduce)
我将使用什么函数来获取两个分组观测值之间的差异?