[英]How can I iterate over column values in Pandas and create a new observation based on the values of multiple columns in the same row?
[英]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.