Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pandas DataFrame diagonal

What is an efficient way to get the diagonal of a square DataFrame. I would expect the result to be a Series with a MultiIndex with two levels, the first being the index of the DataFrame the second level being the columns of the DataFrame.

Setup

import pandas as pd import numpy as np  np.random.seed([3, 1415]) df = pd.DataFrame(np.random.rand(3, 3) * 5,                   columns = list('abc'),                   index = list('ABC'),                   dtype=np.int64                  ) 

I want to see this:

print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]  A  a    2 B  b    2 C  c    3 
like image 357
piRSquared Avatar asked May 18 '16 21:05

piRSquared


People also ask

How do pandas multiply matrices?

Compute Matrix Multiplication of DataFrames in Pandas To compute the matrix multiplication between the DataFrame and other DataFrame, call dot() method on this DataFrame and pass the other object as argument to this method.


1 Answers

If you don't mind using numpy you could use numpy.diag

pd.Series(np.diag(df), index=[df.index, df.columns])  A  a    2 B  b    2 C  c    3 dtype: int64 
like image 177
johnchase Avatar answered Sep 20 '22 17:09

johnchase