Python 熊猫如何处理聚合函数和与差

Python 熊猫如何处理聚合函数和与差,python,pandas,Python,Pandas,我正在使用python和pandas,我有一个数据集,看起来像: District Race/Ethnicity Value 3 Achievement First Academy District Black or African American 30.0 4 Achievement First Academy District White

我正在使用python和pandas,我有一个数据集,看起来像:

                            District             Race/Ethnicity      Value 
3   Achievement First Academy District  Black or African American    30.0   
4   Achievement First Academy District  White                         0.0  
10  Amistad Academy District            Black or African American    40.5      
11  Amistad Academy District            White                        23.1  
因此,如果我想按每个地区的总和进行分组和排序。我只需要做以下几件事:

df= df.groupby('District')
df = abs(df.sum()).sort_values('Value', ascending=False)
df= df.groupby('District')
df = abs(df.diff()).sort_values('Value', ascending=False)
我从中得到了我想要的东西:

District                                    Value                                                 
Achievement First Academy District           30.0
Amistad Academy District                     63.6
但是说我想要每个地区的差异。我做了以下工作:

df= df.groupby('District')
df = abs(df.sum()).sort_values('Value', ascending=False)
df= df.groupby('District')
df = abs(df.diff()).sort_values('Value', ascending=False)
我得到的结果与求和时完全不同。我得到:

    Value
4   30.0
10  17.4
我真的需要一个输出,就像我使用sum时一样。熊猫处理和和差的方式有区别吗?如何得到像求和一样的输出?

sum
将所有元素求和为一个数字
diff
获取元素和它前面的元素之间的差异(复数),并返回它们的序列。您认为它们是平行的,因为您的组只有两个元素,但一般来说,它们根本不平行。下面是一个简单的例子:

>>> x = pandas.Series([5, 4, 3, 2, 1])
>>> x.sum()
15
>>> x.diff()
0   NaN
1    -1
2    -1
3    -1
4    -1
dtype: float64
如果您知道您想要的差异总是每组中第一个元素减去第二个元素,那么您可以这样做:

g = df.groupby('District')
new_df = g.Value.apply(lambda x: x.iloc[1] - x.iloc[0]).sort_values(ascending=False)

但是,如果你的学校有两个以上的种族群体,你就必须重新考虑你想要计算什么,因为在这种情况下,“差异”将不会得到很好的定义。

谢谢!有没有办法按照新的有序序列对原始数据帧进行重新排序?