2014-10-03 25 views
0

我需要在数据框中查找所有对列按操作。我想出了一个天真的解决方案,但想知道是否有任何优雅的方式可用。在两个数据帧上执行按列操作的优雅方式

以下脚本计算两列中都有一个的数字行。

输入:

a b c d 
0 0 0 1 0 
1 1 1 0 1 
2 1 1 1 0 

输出:

2 2 1 1 
2 2 1 1 
1 1 2 0 
1 1 0 1 

代码:

df = DataFrame(random.randint(0,high=2, size=(3,4)), columns=['a','b', 'c', 'd']) 
mycolumns = df.columns 
for i in range(0, shape(df)[1]): 
    for j in range(0, shape(df)[1]): 
     print(sum(df[mycolumns[i]] & df[mycolumns[j]])) 

回答

1

即基本上X'X矩阵乘法X'被转置的X

>>> xs = df.values 
>>> xs.T.dot(xs) 
array([[2, 2, 1, 1], 
     [2, 2, 1, 1], 
     [1, 1, 2, 0], 
     [1, 1, 0, 1]]) 
+0

感谢您指出了这一点 – user1140126 2014-10-03 16:51:24

相关问题