You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:05:30