使用pandas将数据帧与矩阵输出连接起来

2024-05-16 08:20:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用来自基于单元的中间数据帧(矩阵_df)的数据将输入数据帧(inp_df)转换为输出数据帧(out_df),如下所示。在

有几个基于单元格编号的文件,其距离值显示在矩阵_df中。在

程序按单元格迭代,并从适当的文件中获取数据,这样每次矩阵都会有当前单元格的所有行的数据,我们在inp_df中迭代这些行。在

inp_df
A       B           cell
100     200         1
115     270         1
145     255         2
115     266         1

matrix_df (cell_1.csv)
B           100     115     199     avg_distance
200         7.5     80.7    67.8        52
270         6.8     53      92          50
266         58      84      31          57

matrix_df (cell_2.csv)
B            145    121     166     avg_distance
255          74.9   77.53   8       53.47



out_df dataframe
A       B           cell    distance    avg_distance
100     200         1       7.5         52
115     270         1       53          50
145     255         2       74.9        53.47
115     266         1       84          57

我目前对每个基于单元格的数据的思考过程是

  1. 使用apply函数逐行执行
  2. 然后使用inp_df with with with matrix_df中基于列B的联接,其中矩阵df以某种方式转换为列名、距离和平均距离的元组。在

但我正在寻找一种泛音的方法来实现这一点,因为当输入中有数百万行时,我的方法会减慢速度。我特别在迭代中寻找核心逻辑来获取匹配项,因为在每个单元格中matrix_df中的列数会有所不同

如果有帮助的话,矩阵文件是来自sklearn.metrics.pairwise.pairwise_distances的基于距离的输出。在

注意:在inp_df中,B列的值是唯一的,A列的值可能是唯一的,也可能不是唯一的

另外,matrix_dfs的第一列是空的,因为它是一个无头的矩阵输出文件,为了便于理解,我用下面的代码对其进行了重命名。在

^{pr2}$

Tags: 文件csv数据方法距离dfwithcell
1条回答
网友
1楼 · 发布于 2024-05-16 08:20:02

第1步:pd.concat连接输入,并使用df.merge与{}合并

In [641]: out_df = pd.concat([matrix_df1, matrix_df2]).merge(inp_df)

第2步:通过使用A的值索引到正确的列中,创建带有df.applydistance

^{pr2}$

相关问题 更多 >