如何删除熊猫数据框列中的列表以将分类值转换为数值

时间:2019-10-01 14:45:11

标签: python pandas dataframe data-cleaning

我正在尝试使用pd.get_dummies()函数将分类特征转换为数字,但是问题是我有一个带有列表的列。顺便说一下,这是流派列。

0     ['Action', 'Adventure', 'Comedy', 'Drama', 'Sc...

1     ['Action', 'Drama', 'Mystery', 'Sci-Fi', 'Space']

2     ['Action', 'Sci-Fi', 'Adventure', 'Comedy', 'D...

3     ['Action', 'Magic', 'Police', 'Supernatural', ...

4     ['Adventure', 'Fantasy', 'Shounen', 'Supernatu...

我已经尝试了解决此问题的stackoverflow上的所有答案。没用

我希望输出为

0    'Action', 'Adventure', 'Comedy', 'Drama', 'Sc...

1    'Action', 'Drama', 'Mystery', 'Sci-Fi', 'Space'

2    'Action', 'Sci-Fi', 'Adventure', 'Comedy', 'D...

3    'Action', 'Magic', 'Police', 'Supernatural', ...

4    'Adventure', 'Fantasy', 'Shounen', 'Supernatu...

这样我就可以使用get_dummies来创建假人了。请帮忙!

1 个答案:

答案 0 :(得分:0)

您可以在0.25以上的熊猫中使用explode来做到这一点

d = {"genre":[['Action', 'Adventure', 'Comedy', 'Drama'],  
 ['Action', 'Drama', 'Mystery', 'Sci-Fi', 'Space'],  
 ['Action', 'Sci-Fi', 'Adventure', 'Comedy'],  
 ['Action', 'Magic', 'Police', 'Supernatural'],    
 ['Adventure', 'Fantasy', 'Shounen', 'Supernatu']]}

df = pd.DataFrame(d)
pd.get_dummies(df.explode("genre").pivot(columns="genre", values="genre"))