我试图找到正确的语法来选择 Pandas DataFrame 中的一行切片,条件是多维切片。我想通过在多维 numpy 数组中提供 bin 并矢量比较记录是否适合一个 bin 或另一个 bin 来执行直方图分箱。结果应该是一个 1 维 numpy 数组,其中包含每个 bin 中的项目数。我最初的模型尝试如下,以供参考,尽管我已经在下面的答案中提供了部分实现(使用循环代替):import numpy as npimport pandas as pd## Generate Random DataX = np.random.normal(0.5,0.1,100)## Populate a Pandas DataFrameDF = pd.DataFrame({'x':X})## Some example, hardcoded 1D bins. bins = np.array([ [[0.0,0.2]], [[0.2,0.4]], [[0.4,0.6]], [[0.6,0.8]], [[0.8,1.0]] ])hist = np.zeros(shape=(4,))hist[:] = np.sum( DF.loc[ (DF >= bins[:,:,0]) & (DF > bins[:,:,1]) ].dropna(how='all') )通常,数据是 n 维的,并且 bin 遵循上述模式,其中:[[x_min, x_max], [y_min, ymax], [z_min, z_max]] 对于每个 bin(因此在上面的 1D 示例中存在明显的“额外”嵌套层)。因此切片应该适用于多列的数据帧,这样DF['x'] >= x_min and DF['x'] < x_max and DF['y'] >= y_min and DF['y'] < y_max等等,因此需要与维度无关;切片方法似乎是实现这一目标的最自然的方式,如果可以实现,计算效率应该更高。如果没有,可以尝试我的答案中的列表理解方法 - 但我在多维方面遇到了麻烦。
添加回答
举报
0/150
提交
取消