gpt4 book ai didi

pandas - 在 Pandas 数据框中创建一个包含 bool 列组合计数的方阵

转载 作者:行者123 更新时间:2023-12-04 14:52:10 25 4
gpt4 key购买 nike

我有一个包含许多长 bool 值列的 Pandas 数据框。

    Col1    Col2    Col3
0 False True True
1 False True True
2 False True True
3 False True False
4 True False True

我可以在每个成对的列组合上使用 GroupBy 来获取计数,但我希望有一种更优雅的方法来对列进行成对比较并将结果放入表(相关/重合矩阵)中以方便理解。明确地说,如果相关的两列都为真,我想计算条件。我不太关注身份条目(即 Col1 与自身),但在我的示例中,我刚刚对该列的 True 条件进行了计数。

        Col1    Col2    Col3    
Col1 1 0 1
Col2 0 4 3
Col3 1 3 4

最佳答案

您可以为此使用 numpy。使用逻辑 and (&) as 运算符将数组与自身进行比较:

a = df.values
(a.T[:, None]&a.T).sum(axis=2)

输出:

array([[1, 0, 1],
[0, 4, 3],
[1, 3, 4]])

作为数据框:

pd.DataFrame((a.T[:, None]&a.T).sum(2),
columns=df.columns,
index=df.columns)

输出:

      Col1  Col2  Col3
Col1 1 0 1
Col2 0 4 3
Col3 1 3 4

答案分解:

>>> a.T
array([[False, False, False, False, True],
[ True, True, True, True, False],
[ True, True, True, False, True]])

>>> a.T[:, None] ## note the extra dimension
array([[[False, False, False, False, True]],

[[ True, True, True, True, False]],

[[ True, True, True, False, True]]])

>>> (a.T[:, None]&a.T)
array([[[False, False, False, False, True],
[False, False, False, False, False],
[False, False, False, False, True]],

[[False, False, False, False, False],
[ True, True, True, True, False],
[ True, True, True, False, False]],

[[False, False, False, False, True],
[ True, True, True, False, False],
[ True, True, True, False, True]]])

>>> (a.T[:, None]&a.T).sum(2) ## counts the True in the third dimension
array([[1, 0, 1],
[0, 4, 3],
[1, 3, 4]])

关于pandas - 在 Pandas 数据框中创建一个包含 bool 列组合计数的方阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68903637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com