计算熊猫共生的更好方法

Edg*_*gón 3 python pandas

我有一个带有布尔列的数据框,每个布尔列指示记录是否属于一个类别:

import pandas as pd

example = pd.DataFrame({
    "is_a": [True, False, True, True],
    "is_b": [False, False, False, True],
    "is_c": [True, False, False, True],
})
Run Code Online (Sandbox Code Playgroud)

例:

    is_a    is_b    is_c
0   True    False   True
1   False   False   False
2   True    False   False
3   True    True    True
Run Code Online (Sandbox Code Playgroud)

我想计算每对类别之间同时出现的次数。我目前正在这样做:

    is_a    is_b    is_c
0   True    False   True
1   False   False   False
2   True    False   False
3   True    True    True
Run Code Online (Sandbox Code Playgroud)

输出:

     is_a is_b is_c
is_a    3    1    2
is_b    1    1    1
is_c    2    1    2
Run Code Online (Sandbox Code Playgroud)

这给了我正确的输出,但是我想知道是否有人认为他们已经找到了解决此问题的更好的方法。

piR*_*red 5

dot

这是pandas.DataFrame.dot使用@运算符的Pandas方法。

(lambda d: d.T @ d)(example.astype(int))

      is_a  is_b  is_c
is_a     3     1     2
is_b     1     1     1
is_c     2     1     2
Run Code Online (Sandbox Code Playgroud)

同样的事情,但ndarray改用

a = example.to_numpy().astype(int)
pd.DataFrame(a.T @ a, example.columns, example.columns)

      is_a  is_b  is_c
is_a     3     1     2
is_b     1     1     1
is_c     2     1     2
Run Code Online (Sandbox Code Playgroud)

  • “ LISP”是你吗?哈哈 (2认同)