如何在Pandas数据帧中将一串数字拆分为带编号的列



我有一个pandas数据帧,看起来像这样:

caption_text穿着泳衣拿着阳伞的女人[/tr>黑色和银色钟楼[/tr>
ImageID 标签
0.JPG 1
1.JPEG 1 19
2.JPEG 8 3 13 这张照片显示了人们在山上滑雪

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

只是提供了一种替代方法。您可以对每个标签进行迭代,查看labels中的值是否包含该标签:

n = 19
for i in range(1, n+1):
df[i] = df['labels'].str.contains(rf'b{i}b').astype(int)

最新更新