【问题标题】:Creating a sparse matrix from pandas data frame using scipy.sparse使用 scipy.sparse 从 pandas 数据帧创建稀疏矩阵
【发布时间】:2021-04-08 23:35:19
【问题描述】:

我有一个带有两个变量 X 和 Y 的 pandas 数据框(大约 1M 行),并且希望使用 scipy,sparse 创建一个稀疏矩阵。输出应该是一个 n x m 矩阵,如果 X = x 且 Y = y,则其条目为 1。
下面是一个数据结构的例子

import pandas as pd
data = [[1256, 10], [3087, 15], [2199, 14], [2199, 10], [1256, 15], [3087, 14], [1056, 10], [408, 15], [1256, 14]]
  
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['X', 'Y'])
  
# print dataframe.
df

想要的输出是

       10  15  14
1256    1   1   1
3087    0   1   0
2199    1   0   1
3087    0   0   1
1056    1   0   0
408     0   1   0

提前致谢

【问题讨论】:

  • 你的输出中有两行3087,你能解释一下原因吗?
  • 对不起,这是我的错误

标签: python pandas scipy


【解决方案1】:

尝试使用get_dummiessparse=True 并可能使用dtype='i8'(可选)以减少内存使用

out = pd.get_dummies(df.set_index("X")['Y'],sparse=True,dtype='i8').max(level=0)

print(out)


      10  14  15
X               
1256   1   1   1
3087   0   1   1
2199   1   1   0
1056   1   0   0
408    0   0   1

【讨论】:

  • 这太酷了。非常感谢您花时间帮助我
  • @StephenOkiya 如果答案对您有所帮助,请考虑接受答案以关闭此问题..!! How does accepting an answer work?
  • 虽然答案大体上是对的。该代码已经花费了数小时,并且仍在运行。
猜你喜欢
  • 1970-01-01
  • 2015-04-25
  • 2021-10-11
  • 2014-11-30
  • 1970-01-01
  • 2017-03-31
  • 2019-08-26
相关资源
最近更新 更多