Pandas: assignment with dataframe.loc fails (in some cases)

Created on 27 Jan 2015  路  1Comment  路  Source: pandas-dev/pandas

This is probably by design but I find this very unintuitive...

More context:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.zeros(2), columns=['A'])
data.loc[:].A = 'HELLO'
print data

data = pd.DataFrame(np.zeros(2), columns=['A'])
data.A.loc[:] = 'HELLO'
print data

data = pd.DataFrame(np.zeros(2), columns=['A'])
data.loc[:1].A = 'HELLO'  # <-- FAILS
print data

data = pd.DataFrame(np.zeros(2), columns=['A'])
data.A.loc[:1] = 'HELLO'
print data

Output:

       A
0  HELLO
1  HELLO

       A
0  HELLO
1  HELLO

   A
0  0
1  0

       A
0  HELLO
1  HELLO
Indexing Usage Question

>All comments

This is all chained assignment, you never want to do this: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

simply do

df.loc[row_indexer,col_indexer] = value

and it will always work

Was this page helpful?
0 / 5 - 0 ratings

Related issues

MatzeB picture MatzeB  路  3Comments

scls19fr picture scls19fr  路  3Comments

amelio-vazquez-reina picture amelio-vazquez-reina  路  3Comments

BDannowitz picture BDannowitz  路  3Comments

venuktan picture venuktan  路  3Comments