我有一个数据框,有两列。我试图根据数据框内的数字创建第三列。如果b列中的数字是正数,我希望c列等于ab列
如果b列中的数字是负数,我希望c列等于ab*0.95列。
我想得到的一个例子是:
col_a col_b col_c
100. 1. 100
100. -1. -95
100. 10. 1000
100. -10. -950
I have currently tried this:
def profit_calculation(value):
if value<0:
return(a * b * 0.95)
else:
return(a * b)
df['col_c']=df['col_b'].apply(profit_calculation)
但这似乎是不正确的。
3条答案
按热度按时间bis0qfac1#
说明:与浮点0.05相乘时,布尔级数
(df.b < 0)
被转换为整数(真=1,假=0),因此在负b的所有示例中,我们从1中减去0.05,从而在需要时得到0.95。gxwragnw2#
你可以用
np.where
并使用gt
:其中打印:
ukqbszuj3#
您可以使用lambda函数根据 Dataframe (df)中的数据创建新数据,请参见此处的lambda函数说明=>https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.dataframe.apply.html 它接受 Dataframe 中的一行参数,并返回对每一行所做的更新,我们称之为利润计算,并给它与参数中的行相对应的数据。所以你必须用