<div> </div>
<div>Hi Everyone,<br>a beginner's question on how to perform some data substitution efficiently. I have a panel dataset, or in other words x individuals observed over a certain time span. For each column or individual, I need to substitute a certain value anytime a certain condition is satisfied. Both the condition and the value to be substituted into the panel dataset are individual specific. I can tackle the fact that the condition is individual specific but I cannot find a way to tackle the fact that the value to be substituted is individual specific without using a for – lop. Frankly, considering the size of the dataset the use of a for loop is perfectly acceptable in terms of the time needed to complete task but still it would be nice to learn a way to do this (a task I implement often) in a more efficient way.</div>

<div>Thanks in advance<br>Cristiano</div>
<div> </div>
<div><br>import numpy as np<br>from copy import deepcopy</div>
<div>Data = np.array([[0,4,0],<br>                [2,5,7],<br>                [2,5,6]])<br>EditedData = deepcopy(Data)                </div>
<div>Condition = np.array([0, 5, 6])     # individual-specific condition<br>SubstituteData = np.array([1, 10,100])    <br># The logic here <br># if the value of any obssrvation for the 1st individual is 0, substitute 1,<br>
#                                     the 2nd individual is 5, substitute 10<br>#                                     the 3rd individual is 6, substitute 100<br>       </div>
<div># This wouldn't a problem if SubstituteData was not individual specific Data<br># eg EditedData[Data==Condition] = 555</div>
<div># As SubstituteData is individual specifc, I need to use a for loop<br>for i in range(np.shape(EditedData)[1]):<br>    TempData = EditedData[:, i]  # I introduce TempData to increase readability<br>    TempData[TempData == Condition[i]] = SubstituteData[i]<br>
    EditedData[:, i] = TempData</div>
<div>    <br>print   EditedData</div>