import pandas as pd df = pd.DataFrame(randn(6,3),columns = list('ABC')) df df['D']=0.0 key = 3*[1]+3*[2] df['key']=key df this doesn't work: df[df.key==1]['D'] = 1 df this does: (why only this way?) df.D[df.key==1]=3.4 df