簡體   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