python - 将 pandas df 从长转换为宽,然后转换为稀疏矩阵

标签 python pandas sparse-matrix

我有这个数据集:

ARTID    INFO_1         INFO_2 
00001   some_info_11   some_info_21
00002   some_info_12   some_info_22
00003   some_info_13   some_info_23

我想这样转变

ARTID    some_info_11  some_info_12   some_info_13   some_info_21   some_info_22 some_info_23
00001      1                 0           0              1                0             0
00002      0                 1           0              0                1             0

但我需要是一个稀疏矩阵。最“内存友好”的方法是什么?

最佳答案

使用pd.get_dummies()pd.concat()

df1 = pd.concat([df.ARTID,pd.get_dummies(df[['INFO_1','INFO_2']],prefix='',prefix_sep='')],axis=1)

print(df1)
  ARTID  some_info_11  some_info_12  some_info_13  some_info_21  \
0 00001             1             0             0             1   
1 00002             0             1             0             0   
2 00003             0             0             1             0   

   some_info_22  some_info_23  
0             0             0  
1             1             0  
2             0             1  

如果允许 ARTID 作为索引,则可以使用:

pd.get_dummies(df[['INFO_1','INFO_2']],prefix='',prefix_sep='').set_index(df.ARTID)

             some_info_11  some_info_12  some_info_13  some_info_21  some_info_22  \
ARTID                                                                         
00001                 1             0             0             1             0   
00002                 0             1             0             0             1   
00003                 0             0             1             0             0   

          some_info_23  
ARTID                
00001                 0  
00002                 0  
00003                 1

关于python - 将 pandas df 从长转换为宽,然后转换为稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197329/

相关文章:

python - 更新和合并 pandas 数据框中的列

python - 将日期列表和 Country_list 中的不同元素添加到数据帧

c++ - 在 C++ 中解决稀疏线性系统的最佳方法 - GPU 可能吗?

python - scipy 稀疏矩阵除法

python - 当满足条件时,使列行与另一列的匹配值相同

python - django - 当前事务被中止,命令被忽略直到事务 block 结束

python - 当列中有字符串时,如何从 pandas 列中获取最长长度的字符串/整数/ float

python - Scipy Sparse - 距离矩阵(Scikit 或 Scipy)

python - 在 windows 中编写的 python 代码可以在 linux 中运行吗?

python : pymysql error cursor closed when using two databses or multiple databases with cursor