Python 计算二进制数并在数据帧中找到交点
基于以下内容,我有两个问题Python 计算二进制数并在数据帧中找到交点,python,pandas,intersection,dataframe,Python,Pandas,Intersection,Dataframe,基于以下内容,我有两个问题DataFrame (1.)每个二进制值表示数据项(p1、p2、p3、p4)的出现或缺失。我想计算数据帧中的二进制值(仅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
DataFrame
(1.)每个二进制值表示数据项(p1、p2、p3、p4)的出现或缺失。我想计算数据帧中的二进制值(仅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.)我想知道会话的交叉点。它用于获取会话1和2、1和3、1和4、2和3、2和4、3和4、3和4之间的公共数据项(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)
我假设您希望将会话
设置为索引
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)
使用
很好的等待,非常感谢。
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