In Python, set value multiindex Pandas -


i'm newbie both python , pandas.

i trying construct dataframe, , later populate values.

i have constructed dataframe

from pandas import *  agemin = 21 agemax = 31 agestep = 2  bins_sumins = [0, 10000, 20000] bins_age = list(range(agemin, agemax, agestep)) indeks_sex = ['m', 'f'] indeks_age  =  ['[{0}-{1})'.format(bins_age[i-1], bins_age[i]) in range(1, len(bins_age))] indeks_sumins = ['[{0}-{1})'.format(bins_sumins[i-1], bins_sumins[i]) in range(1, len(bins_sumins))] indeks = multiindex.from_product([indeks_age  , indeks_sex ,indeks_sumins], names=['age', 'sex', 'sumins'])  cols = ['a', 'b', 'c', 'd']  df = dataframe(data = 0, index = indeks, columns = cols) 

so far well. able assign value whole set of values

>>> df['a']['[21-23)']['m'] = 1 >>> df                             b  c  d age     sex sumins                    [21-23) m   [0-10000)      1  0  0  0             [10000-20000)  1  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [23-25) m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [25-27) m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [27-29) m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 

however, setting value of 1 position no go...

>>> df['b']['[21-23)']['m']['[10000-20000)'] = 2 >>> df                             b  c  d age     sex sumins                    [21-23) m   [0-10000)      1  0  0  0             [10000-20000)  1  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [23-25) m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [25-27) m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [27-29) m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [16 rows x 4 columns] 

what going on here? open idea have misunderstood how multiindexing works. anyone?

first off, have @ docs on chained indexing

second, read needing sort multiindices.

that solution:

in [46]: df = df.sort_index()  in [47]: df.loc['[21-23)', 'm', '[10000-20000)'] = 2  in [48]: df out[48]:                              b  c  d age     sex sumins                    [21-23) f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         m   [0-10000)      0  0  0  0             [10000-20000)  2  2  2  2 [23-25) f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [25-27) f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0 [27-29) f   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0         m   [0-10000)      0  0  0  0             [10000-20000)  0  0  0  0  [16 rows x 4 columns] 

pandas .14 have additional ways slicing multiindex.


Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -