python - 如何将一串数字拆分为 Pandas 数据框中的编号列?
问题描述
我有一个看起来像这样的熊猫数据框:
图片ID | 标签 | 标题文本 |
---|---|---|
0.JPG | 1 | 拿着阳伞的游泳衣的妇女 |
1.JPEG | 1 19 | 黑色和银色的钟楼 |
2.JPEG | 8 3 13 | 这张照片显示人们在山上滑雪。 |
该数据集的标签范围从 1 到 19,我正在尝试将它们分配到它们自己的列中。最终的数据框将有额外的 19 列,其值为 1 或 0。
例如,“8 3 13”将在第 8、3 和 13 列中显示 1,而在其他任何地方显示 0。
到目前为止,我已经设法将它们放入数组并设法将它们放入列中,但是这些都没有给我我需要的东西。
关于如何实现这一目标的任何想法?
谢谢!
解决方案
由于您已经知道范围是 1-19,因此您可以执行 get_dummies 并重新索引:
n=19
arr = df['labels'].str.get_dummies(' ').reindex(map(str,range(1,n+1)),axis=1,fill_value=0)
print(arr)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
2 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
最后,您可以将其与原始数据框连接:
out = pd.concat((df,arr),axis=1)