, :
df = pd.DataFrame({'D0': ['0', 'A', 'B', 'C'],
'D1': ['B', '0', 'C', 'D'],
'D2': ['C','D','0','A']})
0 , NaNs:
df = df.replace('0', np.nan)
D0, D1, D2 . , .
stack , :
code = df.stack()
0 D1 B
D2 C
1 D0 A
D2 D
2 D0 B
D1 C
3 D0 C
D1 D
D2 A
dtype: object
, , , :
code.index = code.index.droplevel(1)
code.name = 'code'
0 B
0 C
1 A
1 D
2 B
2 C
3 C
3 D
3 A
Name: code, dtype: object
, df. join code , , :
code = code.to_frame()
pair = code.join(code, rsuffix='_2')
pd.crosstab, :
freq = pd.crosstab(pair['code'], pair['code_2'])
:
import numpy as np
import pandas as pd
df = pd.DataFrame({'D0': ['0', 'A', 'B', 'C'],
'D1': ['B', '0', 'C', 'D'],
'D2': ['C','D','0','A']})
df = df.replace('0', np.nan)
code = df.stack()
code.index = code.index.droplevel(1)
code.name = 'code'
code = code.to_frame()
pair = code.join(code, rsuffix='_2')
freq = pd.crosstab(pair['code'], pair['code_2'])
code_2 A B C D
code
A 2 0 1 2
B 0 2 2 0
C 1 2 3 1
D 2 0 1 2