Bug in Panel Indexing (original) (raw)

related to #3777

It seems that assigning a DataFrame to a Panel slice doesn't work correctly.
Unless I'm mistaken the below test code should work:

a = np.zeros((2,4,5)) panel = pd.Panel(a, items=['a1','a2']) df = pd.DataFrame(a[0,:,:])

np.testing.assert_equal(panel.loc['a1'].values, df.values) np.testing.assert_equal(panel.loc['a2'].values, df.values)

Assignment by Value Passes for 'a2'

panel.loc['a2'] = df.values np.testing.assert_equal(panel.loc['a1'].values, df.values) np.testing.assert_equal(panel.loc['a2'].values, df.values)

Assignment by DataFrame Fails for 'a2'

panel.loc['a2'] = df np.testing.assert_equal(panel.loc['a1'].values, df.values) np.testing.assert_equal(panel.loc['a2'].values, df.values)

Traceback (most recent call last):

File "C:\Users\dhirschfeld.spyder2\temp.py", line 41, in np.testing.assert_equal(panel.loc['a2'].values, df.values)

File "C:\dev\bin\Python27\lib\site-packages\numpy\testing\utils.py", line 257, in assert_equal return assert_array_equal(actual, desired, err_msg, verbose)

File "C:\dev\bin\Python27\lib\site-packages\numpy\testing\utils.py", line 588, in chk_same_position raise AssertionError(msg)

AssertionError: Arrays are not equal

x and y nan location mismatch: x: array([[ 0., 0., 0., 0., nan], [ 0., 0., 0., 0., nan], [ 0., 0., 0., 0., nan], [ 0., 0., 0., 0., nan]]) y: array([[ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., 0.]])