Reputation: 501
My input:
import pandas as pd
dd = pd.DataFrame({'frame':[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
'sum_result_ICV':[0,1,1,1,2,2,2,2,1,1,1,1,1,1,1,0],
'sum_result_ATO':[0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0]})
dd['result_ICV'] = 0
dd['result_ATO'] = 0
cv_detail = pd.Series(['ICV','ATO'])
I try assign new value based on other column in this way it work:
dd.loc[dd.iloc[:,1]==0,['result_'+cv_detail[0]] ] = 'Other'
OR dd.loc[dd.sum_result_ICV == 0, "result_ICV"] = 'Other'
But this code doesn't, code make more columns, with assign new value into column:
dd.loc[dd.iloc[:,1]==0, dd.iloc[:,3]] = 'Other'
What difference?
Upvotes: 1
Views: 149
Reputation: 862511
Use double iloc
first for select second column by dd.iloc[:,1]
, conmvert to numpy array for possible assign in another iloc
for fourth column (3)
:
dd.iloc[dd.iloc[:,1].to_numpy() == 0, 3] = 'Other'
print (dd)
frame sum_result_ICV sum_result_ATO result_ICV result_ATO
0 0 0 0 Other 0
1 1 1 1 0 0
2 2 1 1 0 0
3 3 1 1 0 0
4 4 2 0 0 0
5 5 2 0 0 0
6 6 2 0 0 0
7 7 2 0 0 0
8 8 1 1 0 0
9 9 1 1 0 0
10 10 1 1 0 0
11 11 1 1 0 0
12 12 1 1 0 0
13 13 1 1 0 0
14 14 1 1 0 0
15 15 0 0 Other 0
Upvotes: 1