如何将Pandas DataFrame转换为指定格式的scipy.sparse.coo_matrix?
把DataFrame转成指定格式的COO矩阵
直接用coo_matrix(df.values)不行是因为它把DataFrame的每一行当成了COO矩阵的一行,把三个列当成了列索引,但你要的是data_1和data_2作为COO的行、列坐标,result是对应位置的数值。
直接可用的代码
import pandas as pd from scipy.sparse import coo_matrix # 你的DataFrame示例 df = pd.DataFrame( {'result': [1.523, 1.33], 'data_1': [4, 84], 'data_2': [1223, 1534]}, index=[1, 3] ) # 拆分出坐标和数值 rows = df['data_1'].to_numpy() cols = df['data_2'].to_numpy() values = df['result'].to_numpy() # 构造COO矩阵 coo_mat = coo_matrix((values, (rows, cols))) # 打印验证 print(coo_mat)
输出结果
运行后会得到你要的格式:
(4, 1223) 1.523 (84, 1534) 1.33
核心逻辑
COO矩阵的正确构造方式是传入(数值数组, (行坐标数组, 列坐标数组)),这样每个(rows[i], cols[i])就对应values[i]的位置,完全匹配你的需求。原DataFrame的索引(1、3这类)不影响,因为COO的坐标由data_1和data_2决定。
内容的提问来源于stack exchange,提问作者Ximi
相关产品推荐
相关产品推荐

