一种更pythonic的方式将一列拆分为多个列,并将它们中的两个相加

三角洲IV

样例代码:

import pandas as pd
df = pd.DataFrame({'id': [1, 2, 3], 'bbox': [[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]]})

目标:

df = pd.DataFrame({'id': [1, 2, 3], 'bbox': [[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]], 'x1': [1, 5, 9], 'y1': [2, 6, 10], 'x2': [4, 12, 20], 'y2': [6, 14, 22]})

换句话说,我想在数据帧中添加四个整数列,其中前两个仅是中每个列表的前两个元素,bbox后两个分别是每个列表中第一个和第三个元素的总和第二和第四。目前,我这样做:

df[['x1', 'y1', 'w', 'h']] = pd.DataFrame(df['bbox'].values.tolist(), index=df.index).astype(int)
df.assign(x2 = df['x1']+df['w'], y2 = df['y1']+df['h'])
df.drop(['w', 'h'], axis = 1) 

对我来说似乎有点令人费解。有没有办法避免创建中间列wh,或者会使代码的可读性降低?对我而言,可读性比保存一条代码行是更高的优先级,因此,如果没有可读的替代方法,我将解决此问题。

耶斯列尔

我认为您可以创建x2y2第一步:

df1 = pd.DataFrame(df['bbox'].values.tolist(),index=df.index).astype(int)
df[['x1', 'y1', 'x2', 'y2']] = df1
df = df.assign(x2 = df['x1']+df['x2'], y2 = df['y1']+df['y2'])

print (df)
   id                     bbox  x1  y1  x2  y2
0   1     [1.0, 2.0, 3.0, 4.0]   1   2   4   6
1   2     [5.0, 6.0, 7.0, 8.0]   5   6  12  14
2   3  [9.0, 10.0, 11.0, 12.0]   9  10  20  22

或使用+=

df1 = pd.DataFrame(df['bbox'].values.tolist(),index=df.index).astype(int)
df[['x1', 'y1', 'x2', 'y2']] = df1
df['x2'] += df['x1']
df['y2'] += df['y1']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL - 将一列中的值拆分为两个单独的列

string 将值拆分为两列,然后将它们连接到一个新列中

将两个日期从一列拆分为两个不同的列

拆分一些字符串并将它们传递到两个不同的列中。

将数据帧的一列拆分为两个单独的列

SQL:从两个表中取出一列并将它们放入一个预定义的表中

如何根据分隔符将一行拆分为多行,并将它们作为键值对与另一列联系起来?

拆分字符串并将它们堆叠在一列中

将 Python 列表字段拆分为两个并将它们留在原处

将一列分为两个选择文本

是否有一种基于索引将列表拆分为两个的首选方法

有没有一种自动方法可以将JSON(B)列拆分为PostgreSQL中的多个列?

如何删除每列中的两个重复项之一并将它们合并到 r

将一列拆分为两列 - SQL Server

使用 r 将一列拆分为两列

将一列拆分为两列 bash Linux

将一列拆分为两列mysql表

如何计算同一张表中的两个独立列并将它们累加到一个新列中

从两个表中选择多个列,其中一个表的一个列具有多个where条件,并将它们按两列分组并按一个顺序排序

一种基于第一列将文本文件拆分为任意块的方法?

根据一列将一个表拆分为多个表

如何仅通过计算字符并将它们通过SQL查询插入到另一张表中就将一列分为两列?

PostgreSQL 9.3:将一列拆分为多个

将一列拆分为多个sql

SQL:将一列拆分为多个

单独将一列拆分为多个

将列表列表内的字符串拆分为两个元素,这些元素保留在同一列表中

将样式化组件拆分为多个文件,但将它们导出为一个文件

如何将一个向量拆分为n个向量并将它们打印在R中的一个表中?