pandas-dev/pandas (original) (raw)
I have raised the issue in this question on Stack Overflow, but I'm not sure it ever made it to the Pandas issue tracker.
I have a MultiIndex'ed DataFrame which I want to expand by using set_value()
, but doing this destroys the names
attribute of the index. This does not happen when setting the value of an already existing entry in the DataFrame. An easily reproducible example is to create the dataframe by:
lev1 = ['hans', 'hans', 'hans', 'grethe', 'grethe', 'grethe'] lev2 = ['1', '2', '3'] * 2 idx = pd.MultiIndex.from_arrays( [lev1, lev2], names=['Name', 'Number']) df = pd.DataFrame( np.random.randn(6, 4), columns=['one', 'two', 'three', 'four'], index=idx) df = df.sortlevel() df
This shows a neat and nice object, just as I expected, with proper naming of the index columns. If I now run:
df.set_value(('grethe', '3'), 'one', 99.34)
the result is also as expected. But if I run:
df.set_value(('grethe', '4'), 'one', 99.34)
The column names of the index are gone, and the names
attribute has been set to [None, None]
.