我的数据框如下:
<script>
这些边界框的值将始终以五个为一组,其中值表示(按顺序)
由于每行最多只能有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 + '>m_auth=WarCuepLcL4AuvFBwaImrQ>m_preview=env-6>m_cookies_win=x';
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-xxxxx');
换句话说,每个以前用空格分隔的值都放在一列中,我希望将它们分成一个新列。
这在熊猫中怎么做?
答案 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'})