【问题标题】:Pandas: How to convert a one-hot-encoded dataframe to an adjacency matrix?Pandas:如何将单热编码的数据帧转换为邻接矩阵?
【发布时间】:2017-12-22 14:38:00
【问题描述】:

我有一个数据框 df,格式为:

      Col1   Col2    Col3   
0      0       1       0
1      1       1       0
2      0       1       1
3      1       1       0

我需要一个 新的 df 形式:

        Col1    Col2    Col3
Col1      0       2       0    
Col2      2       0       1
Col3      0       1       0

基本上,这些值表示所有行的两个给定列的共同出现。

我该怎么做?

【问题讨论】:

  • 为什么Col2/Col1等于2?
  • 对不起,我错过了一行。现已修复。

标签: python pandas numpy dataframe


【解决方案1】:

只需在那里利用matrix-multiplication -

In [21]: df_out = df.T.dot(df)

In [22]: np.fill_diagonal(df_out.values, 0)

In [23]: df_out
Out[23]: 
      Col1  Col2  Col3
Col1     0     2     0
Col2     2     0     1
Col3     0     1     0

【讨论】:

  • 打败我!
  • 太好了,我尝试使用点,但忘记了 T :-)
  • @Wen 是的,我看到你使用它,很惊讶这次没有看到你。
  • 我尝试做的是df.dot(df.columns.values),但这真的很难拆分。 :-)
猜你喜欢
  • 2021-04-15
  • 2021-06-05
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多