如何将单元格中的值转换为新列?

2024-04-18 00:58:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据帧如下所示:

+-------+-----------------------------------------+
| Image | Bounding Boxes                          |
+-------+-----------------------------------------+
| a.jpg | xyz 0.1 0.2 0.3 0.4                     |
| b.jpg | xyz 0.1 0.2 0.3 0.4 ijk 0.4 0.3 0.2 0.1 |
+-------+-----------------------------------------+

这些边界框的值总是以五个一组的形式出现,其中值的含义是(按顺序)

  • 边界框表示的标签的ID
  • 边界框的X坐标(以图像宽度的百分比表示)
  • 边界框的Y坐标(以图像高度的百分比表示)
  • 图像宽度(占整个图像的百分比)
  • 图像高度(占整个图像的百分比)

由于每一行最多只有5个这样的对(至少为零),我想将dataframe转换为如下所示:

+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----+
| Image | L1  | x1  | y1  | w1  | h1  | L2  | x2  | y2  | w2  | h2  | ... | h5 |
+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----+
| a.jpg | xyz | 0.1 | 0.2 | 0.3 | 0.4 |     |     |     |     |     |     |    |
| b.jpg | xyz | 0.1 | 0.2 | 0.3 | 0.4 | ijk | 0.4 | 0.3 | 0.2 | 0.1 | ... |    |
+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----+

换句话说,以前在一列中的每个空格分隔的值,我希望它们被拆分成一个新列。你知道吗

问题

如何在熊猫身上做到这一点?你知道吗


Tags: 数据图像image宽度高度顺序形式边界
0条回答
网友
1楼 · 发布于 2024-04-18 00:58:07

只需使用^{}在空格上拆分,然后与Image列联接即可:

new_df = df[['Image']].join(df['Bounding Boxes'].str.split(' ', expand=True))

>>> new_df
   Image    0    1    2    3    4     5     6     7     8     9
0  a.jpg  xyz  0.1  0.2  0.3  0.4  None  None  None  None  None
1  b.jpg  xyz  0.1  0.2  0.3  0.4   ijk   0.4   0.3   0.2   0.1

在此之后,可以使用new_df.columns = ['my', 'list', 'of', 'column', 'names']new_df.rename(columns={'old column name':'desired column name'})根据需要重命名列

相关问题 更多 >

    热门问题