簡體   English   中英

使用 dataframe 中其他兩列的條件創建一個新列

[英]Create a new column using a condition from other two columns in a dataframe

我正在嘗試創建一個列,正如我在下一行代碼中詳述的那樣,如果 dataframe 的其中一行中有一個零值,則在此 dataframe 的新列的行中創建一個“Sin Valor”值。

import pandas as pd

data = pd.DataFrame({
        'Qu1' : [12,34,0,45,0],
        'Qu2' : ['A1','A2',"B0",'C2','B0'],
        'Control' : ['A1', 'A2','Sin Valor/ -' + "B0" ,'C2','Sin Valor/ -'+ "B0"]})

在 Excel 中,我想做的應該是附上這張圖片。

在此處輸入圖像描述

我試圖創建一個 function 來做到這一點並通過 lambda function 應用,但這不起作用。

def fill_df(x):
    if data["Qu1"] == 0:
        return x.zfill('Sin Valor/ -')
    else: 
        return ' ' 
data['Control'] = data.apply(fill_df)

有可能這樣做嗎? 歡迎任何幫助。 謝謝。

使用 np.where 來完成它

df['ctrl'] = np.where(df['Qu1'] == 0,
                     'Sin Valor/-'+df['Qu2'],
                     df['Qu2'])
df

我介紹了“ctrl”列,它符合您的要求並匹配“控制”(所需)列

    Qu1     Qu2     Control         ctrl
0    12     A1      A1              A1
1    34     A2      A2              A2
2     0     B0      Sin Valor/ -B0  Sin Valor/-B0
3    45     C2      C2              C2
4     0     B0      Sin Valor/ -B0  Sin Valor/-B0
mask = df['Qu1'] == 0
df.loc[mask, 'Control'] = 'Sin Valor/ -' + df['Qu2'][mask]

暫無
暫無

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

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