Pandas 使数据框上的箱子更粗糙,并在计数列中求和
我有一个带有变量(E)的数据帧,其中数据帧中的值是bin的左边缘,每个bin的一组占用率(n)(以及不确定性的平方(v))。目前,这些箱子以100(通常)的步数从200分到2000分,然后再分到+inf。然而,这些箱子对于我需要执行的绘图非常合适,我需要将它们重新分到200、300、400、600、1000、+inf 关键点:因为我从一个源读取了几组类似的数据,所以并非所有的数据帧都有条目,例如bin 600-700,即一个数据帧中缺少一些行,而另一个数据帧可能有条目。我需要根据新的BIN对n和v进行重新编码和求和,同时考虑到我的数据帧不是“常规”数据帧这一事实 下面是一个数据帧示例: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 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版本之间的差异,也可能是我在宏中使用它的方式不同。再次感谢你!