[英]How to create new column in dataframe based on condition from other 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.