Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将pandas中的列表列转换为Python中唯一值的稀疏数据帧_Python_Pandas_List_Dataframe_Sparse Matrix - Fatal编程技术网

如何将pandas中的列表列转换为Python中唯一值的稀疏数据帧

如何将pandas中的列表列转换为Python中唯一值的稀疏数据帧,python,pandas,list,dataframe,sparse-matrix,Python,Pandas,List,Dataframe,Sparse Matrix,对于每个行id,我都有一个值列表作为一列。 结构如下: df = {'id1':[['a','b','c','d']],'id2':[['a','d','e','j']],'id3':[['b','d','i','q']]}, df = pd.DataFrame.from_dict(df,orient='index') 这给了我: 首先,我使用以下代码在侧面创建了一组唯一的值: l = df.values.tolist() flat_set = {item for sublist in l f

对于每个行id,我都有一个值列表作为一列。 结构如下:

df = {'id1':[['a','b','c','d']],'id2':[['a','d','e','j']],'id3':[['b','d','i','q']]},
df = pd.DataFrame.from_dict(df,orient='index')
这给了我:

首先,我使用以下代码在侧面创建了一组唯一的值:

l = df.values.tolist()
flat_set = {item for sublist in l for item in sublist}

最后,我需要得到这个的稀疏版本:

注:

集合中唯一值的数量-100K~ 身份证号码-60K~ 如果缩短栏目名称会导致 内存减少, 但对我来说,从列表中解包到稀疏是最困难的部分

请提供帮助:

与数据帧构造函数一起使用:

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df[0]),columns=mlb.classes_, index=df.index)
print (df)
     a  b  c  d  e  i  j  q
id1  1  1  1  1  0  0  0  0
id2  1  0  0  1  1  0  1  0
id3  0  1  0  1  0  1  0  1
编辑:对于稀疏数据帧,将稀疏输出=True添加到MultiLabelBinarizer并使用

与数据帧构造函数一起使用:

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df[0]),columns=mlb.classes_, index=df.index)
print (df)
     a  b  c  d  e  i  j  q
id1  1  1  1  1  0  0  0  0
id2  1  0  0  1  1  0  1  0
id3  0  1  0  1  0  1  0  1
编辑:对于稀疏数据帧,将稀疏输出=True添加到MultiLabelBinarizer并使用


df[0]指的是什么?@Talis-它是列名0,可能需要df['package']工作,但是,我可以在声明df时强制它稀疏吗?这里:df=pd.DataFramemlb.fit\u transformdf[0],columns=mlb.classes\uu,index=df。index@Talis-答案已编辑。df[0]指的是什么?@Talis-这是列名0,可能需要df['package']工作,但是,我可以在声明df时强制它稀疏吗?这里:df=pd.DataFramemlb.fit\u transformdf[0],columns=mlb.classes\ux,index=df。index@Talis-答案已编辑。