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

时间:2018-07-11 15:11:37

标签: python pandas dataframe data-science

我的数据框如下:

<script>

这些边界框的值将始终以五个为一组,其中值表示(按顺序)

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

由于每行最多只能有5个这样的对(并且至少要有零个),因此我想将数据帧转换为如下形式:

(function(w, d, s, l, i) {
  w[l] = w[l] || [];
  w[l].push({
    'gtm.start': new Date().getTime(),
    event: 'gtm.js'
  });
  var f = d.getElementsByTagName(s)[0],
    j = d.createElement(s),
    dl = l != 'dataLayer' ? '&l=' + l : '';
  j.async = true;
  j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl + '&gtm_auth=WarCuepLcL4AuvFBwaImrQ&gtm_preview=env-6&gtm_cookies_win=x';
  f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-xxxxx');

换句话说,每个以前用空格分隔的值都放在一列中,我希望将它们分成一个新列。

问题

这在熊猫中怎么做?

1 个答案:

答案 0 :(得分:3)

您可以仅使用str.split(' ', expand=True)在空格上进行分割,然后与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'})

重命名您认为合适的列。