我有一个带有布尔列的数据框,每个布尔列指示记录是否属于一个类别:
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)
这给了我正确的输出,但是我想知道是否有人认为他们已经找到了解决此问题的更好的方法。
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)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |