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)
我将使用什么函数来获取两个分组观测值之间的差异?