gpt4 book ai didi

python - 计算二进制数并在 Pandas DataFrame 中找到交集

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:01 33 4
gpt4 key购买 nike

我有两个基于以下 Pandas DataFrame 的问题。

(1.) 每个二进制值表示一个数据项 (p1,p2,p3,p4) 的出现或不出现。我想计算 DataFrame 中的二进制值(只有 1s)。

df = pd.DataFrame([[1,1,1,0,1],[2,1,1,0,1],[3,1,1,1,1],[4,0,1,0,1]])
df.columns = ['session','p1','p2','p3','p4']

输出

   session  p1  p2  p3  p4
0 1 1 1 0 1
1 2 1 1 0 1
2 3 1 1 1 1
3 4 0 1 0 1

以下是我尝试过的。

print ([df[col].value_counts() for col in df.columns])

但我的预期输出如下。任何帮助解决这个问题。

        count
0 3
1 3
2 4
3 2

(2.) 我想获取 session 的交集。获取session 1和2、1和3、1和4、2和3、2和4、3和4之间的公共(public)数据项(p1,p2,p3,p4)。我不知道预期的输出,但我觉得应该如下所示。

  1,2,3,4
1,3,3,3,2
2,3,3,3,2
3,3,3,4,2
4,2,2,2,2

最佳答案

(1)

我假设你想将session设置为索引

In [86]: df = df.set_index('session')

In [87]: df.sum(axis=1)
Out[87]:
session
1 3
2 3
3 4
4 2
dtype: int64

(2)

使用dot

In [90]: df.dot(df.T)
Out[90]:
session 1 2 3 4
session
1 3 3 3 2
2 3 3 3 2
3 3 3 4 2
4 2 2 2 2

关于python - 计算二进制数并在 Pandas DataFrame 中找到交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21252983/

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