Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When slicing a 1 row pandas dataframe the slice becomes a series

Why when I slice a pandas dataframe containing only 1 row, the slice becomes a pandas series? How can I keep it a dataframe?

df=pd.DataFrame(data=[[1,2,3]],columns=['a','b','c'])
df
Out[37]: 
   a  b  c
0  1  2  3


a=df.iloc[0]

a
Out[39]: 
a    1
b    2
c    3
Name: 0, dtype: int64
like image 475
gabboshow Avatar asked Dec 01 '22 11:12

gabboshow


1 Answers

To avoid the intermediate step of re-converting back to a DataFrame, use double brackets when indexing:

a = df.iloc[[0]]
print(a)
   a  b  c
0  1  2  3

Speed:

%timeit df.iloc[[0]]
192 µs per loop

%timeit df.loc[0].to_frame().T
468 µs per loop
like image 95
Brad Solomon Avatar answered Dec 09 '22 14:12

Brad Solomon