我有一个数据集,它是一个标识符ID,以及该数据中某些特征的标志,例如:
In [86]: frame = pd.DataFrame({"key": [1,2,3,4,5,6,7,8,9], "flag1": [0,1,0,1,0,1,0,1,1], "flag2": [0,0,1,1,0,0,1,1,0], "flag3": [0,0,0,0,1,1,1,1,1]}, columns=['key','flag1','flag2','flag3'])
In [87]: frame
Out[87]:
key flag1 flag2 flag3
0 1 0 0 0
1 2 1 0 0
2 3 0 1 0
3 4 1 1 0
4 5 0 0 1
5 6 1 0 1
6 7 0 1 1
7 8 1 1 1
8 9 1 0 1
我正在寻找输出一个数据集,它提供了每当两个标志都作为数据透视表得到满足时的计数,例如:
flags flag1 flag2 flag3
0 flag1 5 2 3
1 flag2 2 4 2
2 flag3 3 2 5
我想我必须在两个循环上迭代frame.keys()[1:]
,但我不知道如何填充第二个数据集。我应该模仿此Google表格中的行为,但我的实际数据集太大而无法使用Sheets / Excel(大约200万行和60列):
https://docs.google.com/spreadsheets/d/1emEm9RtxPAFceUgalCVbzr0mGNoZEMFjWwqSjrxyAuE/edit?usp=sharing
答案 0 :(得分:3)
我们删除key
,我们不需要它。之后,解决方案几乎是一个矩阵dot
产品:
v = frame.drop('key', 1)
v.T.dot(v)
flag1 flag2 flag3
flag1 5 2 3
flag2 2 4 2
flag3 3 2 5
或者,更有效率,使用del
删除key
列:
del frame['key']
frame.T.dot(frame)
flag1 flag2 flag3
flag1 5 2 3
flag2 2 4 2
flag3 3 2 5