[英]How to apply a lambda function to certain rows in a data frame in pandas and create a new column
我有以下数据框: df1
:
nameID value1 Value2 Value3
name1 10 20 30
name2 15 25 35
name3 7 8 9
name4 5 6 7
我想创建一个新的列result
,以便如果nameID
在['name1,'name3]
则result = value1 * value2
。 否则, result = value1* value3
。 我想使用lambda函数。
nameID value1 Value2 Value3 result
name1 10 20 30 200
name2 15 25 35 525
name3 7 8 9 56
name4 5 6 7 35
通过使用np.where
np.where(df['nameID'].isin(['name1','name3']),df1.value1*df1.Value2 ,df1.value1*df1.Value3)
Out[182]: array([200, 525, 56, 35], dtype=int64)
#df1['result'] = np.where(df['nameID'].isin(['name1','name3']),df1.value1*df1.Value2 ,df1.value1*df1.Value3)
绝对使用np.where
(@Wen的答案)。
为了回答您的问题,lambda函数将采用以下格式:
df.apply(lambda k: k['value1']*k['value2'] if k['nameID'] in (['name1', 'name3']) else k['value1']*k['value3'], axis=1)
0 200
1 525
2 56
3 35
以下代码将在数据框中创建一个新的结果列
df['result'] = np.where(df.nameID.isin(['name1','name3']), df['value1'] * df['value2'], df['value1'] * df['value3'])
输出:
Result
200
525
56
35
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.