我有一个包含10列整数的数据框.我想创建一个新专栏,如下所示:

df["newcol"] = df[col1]*(11-1)+df["col2"]*(11-2)+..+df[col10]*(11-10)

我已经做了上面的工作,而且很管用,但我只是想知道是否有一种毒蛇般的方法来做到这一点.不是这样写下来的,因为有时候我的数据框会有100多列.

推荐答案

简单的方法

df['newcol'] = df.mul(11 - np.r_[1: df.shape[1] + 1]).sum(1)

示例

>>> df

     0    1    2    3    4    5    6    7    8    9
0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0

>>> df.mul(11 - np.r_[1: df.shape[1] + 1])

      0    1    2    3    4    5    6    7    8    9
0  10.0  9.0  8.0  7.0  6.0  5.0  4.0  3.0  2.0  1.0
1  10.0  9.0  8.0  7.0  6.0  5.0  4.0  3.0  2.0  1.0

>>> df.mul(11 - np.r_[1: df.shape[1] + 1]).sum(1)

0    55.0
1    55.0
dtype: float64

Python相关问答推荐

在编写要Excel的数据透视框架时修复标题行

更改Seaborn条形图中的x轴日期时间限制

无法使用python.h文件; Python嵌入错误

由于瓶颈,Python代码执行太慢-寻求性能优化

优化在numpy数组中非零值周围创建缓冲区的函数的性能

使用plotnine和Python构建地块

即使在可见的情况下也不相互作用

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

根据不同列的值在收件箱中移动数据

当多个值具有相同模式时返回空

Django mysql图标不适用于小 case

如何从.cgi网站刮一张表到rame?

如何在Raspberry Pi上检测USB并使用Python访问它?

如何排除prefecture_related中查询集为空的实例?

Maya Python脚本将纹理应用于所有对象,而不是选定对象

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

如果包含特定值,则筛选Groupby

GPT python SDK引入了大量开销/错误超时

使用python playwright从 Select 子菜单中 Select 值

504未连接IB API TWS错误—即使API连接显示已接受''