I\'m trying to create a matrix to show the differences between the rows in a Pandas data frame.
import pandas as pd
data = {\'Country\':[\'GB\',\'JP\',\'US\
Option 1
from itertools import product
import pandas as pd
DF=pd.DataFrame(list(product(df.Country, df.Country)), columns=['l1', 'l2'])
df=df.set_index('Country')
DF['v1']=DF.l1.map(df['Values'])
DF['v2']=DF.l2.map(df['Values'])
DF['DIFF']=DF['v2']-DF['v1']
DF.pivot(index='l1', columns='l2', values='DIFF').fillna(0).rename_axis(None).rename_axis(None,1)
Out[94]:
GB JP US
GB 0.0 -30.7 -14.5
JP 30.7 0.0 16.2
US 14.5 -16.2 0.0
Option 2
using apply
A=df['Values'].apply(lambda x : df['Values']-x)
A.columns=df.Country
A['Country']=df.Country
A
Out[124]:
Country GB JP US Country
0 0.0 -30.7 -14.5 GB
1 30.7 0.0 16.2 JP
2 14.5 -16.2 0.0 US