繁体   English   中英

如何将lambda函数应用于pandas数据框中的某些行并创建新列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM