File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -178,8 +178,11 @@ impl<B: Backend> InnerDataFrameElem<B> {
178178 /// Set a column with a Series.
179179 //TODO: this is not efficient. We should be able to replace a column without reading the whole dataframe.
180180 pub fn set_column < C : IntoColumn > ( & mut self , name : & str , new_col : C ) -> Result < ( ) > {
181+ let mut column = new_col. into_column ( ) ;
182+ column. rename ( name. into ( ) ) ;
183+
181184 let mut df = self . data ( ) ?. clone ( ) ;
182- df. replace ( name . into ( ) , new_col . into_column ( ) ) ?;
185+ df. with_column ( column ) ?;
183186 self . save ( df)
184187 }
185188
Original file line number Diff line number Diff line change @@ -93,8 +93,10 @@ impl Writable for DataFrame {
9393
9494impl Readable for DataFrame {
9595 fn read < B : Backend > ( container : & DataContainer < B > ) -> Result < Self > {
96+ let shape = DataFrame :: get_shape ( container) ?;
9697 let columns: Vec < String > = container. get_attr ( "column-order" ) ?;
97- Ok ( DataFrame :: new_infer_height (
98+ Ok ( DataFrame :: new (
99+ shape[ 0 ] ,
98100 columns
99101 . into_iter ( )
100102 . map ( |name| {
Original file line number Diff line number Diff line change @@ -253,7 +253,7 @@ impl<'py> AnnDataOp for PyAnnData<'py> {
253253
254254 fn set_obs ( & self , obs : DataFrame ) -> Result < ( ) > {
255255 let py = self . py ( ) ;
256- let is_empty = obs. height ( ) == 0 ;
256+ let is_empty = obs. height ( ) == 0 || obs . width ( ) == 0 ;
257257 let index = self . getattr ( "obs" ) ?. getattr ( "index" ) ?;
258258 let mut df = PyDataFrame ( obs) . into_pyobject ( py) ?
259259 . call_method0 ( "to_pandas" ) ?;
@@ -270,7 +270,7 @@ impl<'py> AnnDataOp for PyAnnData<'py> {
270270
271271 fn set_var ( & self , var : DataFrame ) -> Result < ( ) > {
272272 let py = self . py ( ) ;
273- let is_empty = var. height ( ) == 0 ;
273+ let is_empty = var. height ( ) == 0 || var . width ( ) == 0 ;
274274 let index = self . getattr ( "var" ) ?. getattr ( "index" ) ?;
275275 let mut df = PyDataFrame ( var) . into_pyobject ( py) ?
276276 . call_method0 ( "to_pandas" ) ?;
Original file line number Diff line number Diff line change @@ -130,11 +130,11 @@ def test_to_memory(tmp_path, backend):
130130 adata .obs_names = ['a' , 'b' ]
131131 adata .var_names = ['a' , 'b' , 'c' ]
132132
133- adata .to_memory ()
133+ adata = adata .to_memory ()
134134 assert adata .n_obs == 2
135135 assert adata .n_vars == 3
136- assert adata .obs_names == ['a' , 'b' ]
137- assert adata .var_names == ['a' , 'b' , 'c' ]
136+ assert adata .obs_names . tolist () == ['a' , 'b' ]
137+ assert adata .var_names . tolist () == ['a' , 'b' , 'c' ]
138138
139139@pytest .mark .parametrize ("backend" , BACKENDS )
140140def test_resize (tmp_path , backend ):
You can’t perform that action at this time.
0 commit comments