簡體   English   中英

根據多列中的值和相同條件在熊貓中創建新列

[英]Create a new column in pandas based on values in multiple columns and the same condition

我正在嘗試創建一個新列,如果一組列的任何值都滿足相同條件,則將其編碼為1。 這是我嘗試過的,但出現錯誤。 我也嘗試用where語句替換,並且在每個循環中都將替換new_var值,但我想保留循環先前步驟中的重新編碼(不替換為每個步驟,而只是附加編碼)。 所以我需要的是:如果a,b,c列中的任何值<-0.5或> 0.5,則我需要將New_Var編碼為1,否則為零。

df = pd.DataFrame(np.random.randn(10, 5), columns=list('abcde'))
df
cols = ['a', 'b', 'c']


def rec_cap(x,y):
    if (x<-0.5) | (x>0.5):
        return 1
    else:
        return y

df['new_var']=0

for p in cols:
    df['new_var']=df.loc[:,[p]].apply(rec_cap, df['new_var'])

IIUC

((df.loc[:,cols].gt(0.5))|(df.loc[:,cols].lt(-0.5))).any(1).astype(int)
Out[564]: 
0    1
1    1
2    1
3    1
4    1
5    1
6    1
7    1
8    1
9    0
dtype: int32

暫無
暫無

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

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