Python 转换为数据帧的numpy数组会删除值

Python 转换为数据帧的numpy数组会删除值,python,pandas,numpy,Python,Pandas,Numpy,我需要计算2D网格中每个节点的统计信息。我认为实现这一点的简单方法是采用两个范围的交叉连接(也称为笛卡尔积)。我使用numpy实现此功能: def node_grid(x_range, y_range, x_increment, y_increment): x_min = float(x_range[0]) x_max = float(x_range[1]) x_num = (x_max - x_min)/x_increment + 1 y_min = float

我需要计算2D网格中每个节点的统计信息。我认为实现这一点的简单方法是采用两个范围的交叉连接(也称为笛卡尔积)。我使用
numpy
实现此功能:

def node_grid(x_range, y_range, x_increment, y_increment):
    x_min = float(x_range[0])
    x_max = float(x_range[1])
    x_num = (x_max - x_min)/x_increment + 1
    y_min = float(y_range[0])
    y_max = float(y_range[1])
    y_num = (y_max - y_min)/y_increment + 1

    x = np.linspace(x_min, x_max, x_num)
    y = np.linspace(y_min, y_max, y_num)

    ng = list(product(x, y))
    ng = np.array(ng)
    return ng, x, y
但是,当我将其转换为
pandas
dataframe时,它会删除值。例如:

In [2]: ng = node_grid(x_range=(-60, 120), y_range=(0, 40), x_increment=0.1, y_increment=0.1)
In [3]: ng[0][(ng[0][:,0] > -31) & (ng[0][:,0] < -30) & (ng[0][:,1]==10)]
Out[3]: array([[-30.9,  10. ],
   [-30.8,  10. ],
   [-30.7,  10. ],
   [-30.6,  10. ],
   [-30.5,  10. ],
   [-30.4,  10. ],
   [-30.3,  10. ],
   [-30.2,  10. ],
   [-30.1,  10. ]])

In [4]: node_df = pd.DataFrame(ng[0])
node_df.columns = ['xx','depth']
print(node_df[(node_df.depth==10) & node_df.xx.between(-30,-31)])
Out[4]:Empty DataFrame
Columns: [xx, depth]
Index: []

将numpy数组中的值放入pandas数组时,将删除这些值。为什么?

我无法完全复制您的代码

但我发现问题在于,在
中间查询中,必须改变上下边界。以下是我的作品:

print(node_df[(node_df.depth==10) & node_df.xx.between(-31,-30)])
使用时:

ng = np.array([[-30.9,  10. ],
                [-30.8,  10. ],
                [-30.7,  10. ],
                [-30.6,  10. ],
                [-30.5,  10. ],
                [-30.4,  10. ],
                [-30.3,  10. ],
                [-30.2,  10. ],
                [-30.1,  10. ]])
node_df = pd.DataFrame(ng)
“between”函数要求第一个参数小于后一个参数


In:打印(节点测向[(节点测向深度==10)和节点测向xx.between(-31,-30)])
xx深度
116390 -31.0   10.0
116791 -30.9   10.0
117192 -30.8   10.0
117593 -30.7   10.0
117994 -30.6   10.0
118395 -30.5   10.0
118796 -30.4   10.0
119197-30.310.0
119598 -30.2   10.0
119999 -30.1   10.0
120400-30.0 10.0


为清楚起见,所使用的
product()
函数来自
itertools
软件包,即来自itertools import product的

请指定您正在使用的
产品
函数。正如张贴的代码不适合我。
ng = np.array([[-30.9,  10. ],
                [-30.8,  10. ],
                [-30.7,  10. ],
                [-30.6,  10. ],
                [-30.5,  10. ],
                [-30.4,  10. ],
                [-30.3,  10. ],
                [-30.2,  10. ],
                [-30.1,  10. ]])
node_df = pd.DataFrame(ng)