Python 熊猫如何处理聚合函数和与差
我正在使用python和pandas,我有一个数据集,看起来像: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
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)
但是,如果你的学校有两个以上的种族群体,你就必须重新考虑你想要计算什么,因为在这种情况下,“差异”将不会得到很好的定义。谢谢!有没有办法按照新的有序序列对原始数据帧进行重新排序?