Insert Conditional Rows in Columns Insert Conditional Rows in Columns numpy numpy

Insert Conditional Rows in Columns


Try, let's use multiindex with from_product, set_index, and reindex,

This method works for all "seen" values, if a value isn't seen, then you'll need to use hardcoded list in the from_product method:

idx = pd.MultiIndex.from_product([df['Name'].unique(),                                   df['Test'].unique()],                                  names=['Name','Test'])df.set_index(['Name','Test']).reindex(idx, fill_value='No*').reset_index()

Output:

      Name        Test Completed0     John  Math-Test1       Yes1     John  Math-Test2       Yes2     John  Math-Test3       Yes3     John  Math-Test4       Yes4     John  Math-Test5       Yes5   Lauren  Math-Test1       Yes6   Lauren  Math-Test2       Yes7   Lauren  Math-Test3       Yes8   Lauren  Math-Test4       No*9   Lauren  Math-Test5       No*10     Tom  Math-Test1       Yes11     Tom  Math-Test2       Yes12     Tom  Math-Test3       Yes13     Tom  Math-Test4       Yes14     Tom  Math-Test5       Yes

Update

idx = pd.MultiIndex.from_product([df['Name'].unique(),                                   df['Test'].unique()],                                  names=['Name','Test'])newidx = idx[~idx.isin(df.set_index(['Name','Test']).index)]pd.concat([df,         newidx.to_series().reset_index().assign(Completed="No*")[['Name','Test','Completed']]], sort=True, ignore_index=True)