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

Python 如何将单元格中的值转换为Pandas中的新列?,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,我的数据框如下所示: +-------+-----------------------------------------+ | 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 i

我的数据框如下所示:

+-------+-----------------------------------------+
| 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个这样的对(并且至少为零),因此我希望将数据帧转换为如下所示:

+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----+
| 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 | ... |    |
+-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+----+
换句话说,以前在一列中用空格分隔的每个值,我希望将它们拆分为一个新列

问题: 如何在Pandas中实现这一点?

您可以使用在空间上拆分,然后与
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')