Pandas 使数据框上的箱子更粗糙,并在计数列中求和

Pandas 使数据框上的箱子更粗糙,并在计数列中求和,pandas,dataframe,data-binding,sum,Pandas,Dataframe,Data Binding,Sum,我有一个带有变量(E)的数据帧,其中数据帧中的值是bin的左边缘,每个bin的一组占用率(n)(以及不确定性的平方(v))。目前,这些箱子以100(通常)的步数从200分到2000分,然后再分到+inf。然而,这些箱子对于我需要执行的绘图非常合适,我需要将它们重新分到200、300、400、600、1000、+inf 关键点:因为我从一个源读取了几组类似的数据,所以并非所有的数据帧都有条目,例如bin 600-700,即一个数据帧中缺少一些行,而另一个数据帧可能有条目。我需要根据新的BIN对n和

我有一个带有变量(E)的数据帧,其中数据帧中的值是bin的左边缘,每个bin的一组占用率(n)(以及不确定性的平方(v))。目前,这些箱子以100(通常)的步数从200分到2000分,然后再分到+inf。然而,这些箱子对于我需要执行的绘图非常合适,我需要将它们重新分到200、300、400、600、1000、+inf

关键点:因为我从一个源读取了几组类似的数据,所以并非所有的数据帧都有条目,例如bin 600-700,即一个数据帧中缺少一些行,而另一个数据帧可能有条目。我需要根据新的BIN对n和v进行重新编码和求和,同时考虑到我的数据帧不是“常规”数据帧这一事实

下面是一个数据帧示例:

        E       n       v
0       200.0   26.0    1.3 
1       300.0   56.0    2.2
2       400.0   62.0    2.5
3       500.0   55.0    2.2
4       600.0   24.0    1.7
5       800.0   12.0    1.3
6       900.0   8.0     0.9
7       1000.0  4.0     0.6
8       1100.0  1.0     0.2
这是我想要的结果:

        E       n       v
0       200.0   26.0    1.3 
1       300.0   56.0    2.2
2       400.0   117.0   4.7
3       600.0   44.0    3.9
4       1000.0  5.0     0.8

非常感谢任何帮助或指导。

您可以使用
agg

s=df.groupby(pd.cut(df.E,[200,300,400,600,1000,np.inf],right=False)).agg({'E':'first','n':'sum','v':'sum'})

s.E=s.index.map(lambda x :x.left)
s.reset_index(drop=True,inplace=True)
s
        E      n    v
0   200.0   26.0  1.3
1   300.0   56.0  2.2
2   400.0  117.0  4.7
3   600.0   44.0  3.9
4  1000.0    5.0  0.8

这太完美了,谢谢!唯一的区别是我必须删除
inplace=True
,因为它返回的是None类型,但这可能是pandas版本之间的差异,也可能是我在宏中使用它的方式不同。再次感谢你!