Pandas 如何在数据帧中创建虚拟列/表达式列?

Pandas 如何在数据帧中创建虚拟列/表达式列?,pandas,Pandas,我正在寻找打印员工的工资,年薪,奖金的脚本sal是DF中唯一可用的列,其他两列是从sal派生的表达式 annualsalary = 12*sal, bonus=sal*comm/100 我正在尝试下面的代码 empdf.loc[:,'sal':][['sal'], ['sal']*12, ['sal']*['comm']/100] 您能帮我更正上述代码吗?使用带有assign()的临时计算字段。 输出 sal annualsalary bonus 1000 1200

我正在寻找打印员工的
工资
年薪
奖金
的脚本
sal
是DF中唯一可用的列,其他两列是从
sal
派生的表达式

annualsalary = 12*sal, bonus=sal*comm/100
我正在尝试下面的代码

empdf.loc[:,'sal':][['sal'], ['sal']*12, ['sal']*['comm']/100]

您能帮我更正上述代码吗?

使用带有
assign()的临时计算字段。

输出

  sal  annualsalary  bonus
 1000         12000  200.0
 1400         16800  280.0
 1200         14400  240.0
 1400         16800  280.0
 1500         18000  300.0
 1500         18000  300.0
 1100         13200  220.0
 1300         15600  260.0
 1000         12000  200.0
 1000         12000  200.0

如果不是列,
comm
从何而来?它是常数吗?请输入df的一部分。您也没有提到df中有
comm
。您想要这个吗<代码>打印(empdf.sal,empdf.sal*12,(empdf.sal*comm)/100)请查看此我的DF有列EMPNO、NAME、sal、comm使用
lambda
在这里是多余的,您只需执行
DF.assign(annualsalary=DF['sal']*12,bonus=DF['sal']*(comm/100))
@Ch3steR同意-但是为了将来的可维护性,如果列是从派生列派生出来的,我使用的模式是ALWAYSE use
lambda
  sal  annualsalary  bonus
 1000         12000  200.0
 1400         16800  280.0
 1200         14400  240.0
 1400         16800  280.0
 1500         18000  300.0
 1500         18000  300.0
 1100         13200  220.0
 1300         15600  260.0
 1000         12000  200.0
 1000         12000  200.0