簡體   English   中英

Pandas:根據現有列的值創建新列

[英]Pandas: Creating new column based on values from existing column

我有一個 pandas dataframe 有兩列如下:

A      B
Yes    No
Yes    Yes
No     Yes
No     No
NA     Yes
NA     NA

我想根據這些值創建一個新列,這樣如果任何列值是Yes ,新列中的值也應該Yes 如果兩列都具有值No ,則新列也將具有值No 最后,如果兩列都具有值NA ,則 output 也將具有新列的NA 上述數據的示例 output 為:

C
Yes
Yes
Yes
No
Yes
NA

我在 dataframe 的長度上編寫了一個循環,然后檢查每個值以獲得一個新列。 但是,10M 的記錄需要很長時間。 有沒有更快的pythonic方法來實現這一點?

就像是

df.fillna('').max(axis=1)
Out[106]: 
0    Yes
1    Yes
2    Yes
3     No
4    Yes
5       
dtype: object

嘗試:

(df == 'Yes').eval('A | B').astype(str).mask(df['A'].isna() & df['B'].isna())

另一種方法。 雖然硬線

conditions=((df['A']=='Yes')|(df['B']=='Yes'),(df['A']=='No')&(df['B']=='No'),(df['A']=='NaN')&(df['B']=='NaN'))
choicelist=('Yes','No','NaN')
df['C']=np.select(conditions, choicelist)
df

在此處輸入圖像描述

暫無
暫無

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

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