首页 > 解决方案 > 如何将一串数字拆分为 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。

到目前为止,我已经设法将它们放入数组并设法将它们放入列中,但是这些都没有给我我需要的东西。

关于如何实现这一目标的任何想法?

谢谢!

标签: pythonpandasdataframe

解决方案


由于您已经知道范围是 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)

推荐阅读