簡體   English   中英

如何使用基於 2 列的多個條件在 pandas 中創建新列?

[英]How to use multiple conditions based on 2 columns to create the new column in pandas?

我有 2 個字典,我需要根據幾個條件創建列。

dict1 = {'100': BMW, '200': Audi, '300': 'VW'}   
dict2 = {'100': Mercedes, '200': Nissan, '300': 'Renault'}

東風:

class          Code
1              200
1              300
2              300
1              100
2              100   

我實際上想在 class 為 1 時使用 dict1,當 class 為 2 時使用 dict2

所需的 output 將是這樣的:

  class            Code         Car
    1              200          Audi
    1              300          VW
    2              300          Renault
    1              100          BMW
    2              100          Mercedes

如果我沒有條件,我可以使用.map 但我不確定現在該使用什么:

df['Car'] = df['Code'].map(dict1)

我用以下代碼進行了測試

import pandas as pd
dict1 = {'100': 'BMW', '200': 'Audi', '300': 'VW'}
dict2 = {'100': 'Mercedes', '200': 'Nissan', '300': 'Renault'}
df = pd.DataFrame({'Class':[1,1,2,1],'Code':['200','300','300','100']})
def f(row):
    if row['Class'] == 1:
        val = dict1[row['Code']]
    elif row['Class'] ==2:
        val = dict2[row['Code']]
    else:
        val = dict2[row['Code']]
    return val

df['Car']= df.apply(f,axis=1)

print(df)

它打印

    Class Code     Car
0      1  200     Audi
1      1  300       VW
2      2  300  Renault
3      1  100      BMW

如果它只是兩個字典/類:

# note that your dictionary has string key
df['Code'] = df.Code.astype(str)

df['car'] = np.where(df['class']==1,
                     df['Code'].map(dict1),
                     df['Code'].map(dict2) )

Output:

   class Code       Car
0      1  200      Audi
1      1  300        VW
2      2  300   Renault
3      1  100       BMW
4      2  100  Mercedes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM