1
나는이 같은 간단한 팬더 dataframe이 하나팬더 dataframe와 반복 중첩 효율적인
d = {'col1': ['a','b','c','d','e'], 'col2': [1,2,3,4,5]}
df = pd.DataFrame(d)
df
col1 col2
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
그리고 나는 그것을 반복하고 모두를위한 간단한 산술 결과 (제품과 같은 정도)을 얻을 필요가있을 것이다 행 값의 조합 나는이 같은 매트릭스를하고있는 값을 넣어 생각했다 :
size = df.shape[0]
mtx = np.zeros(shape=(size, size))
mtx
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
그러나 어떻게 든 '감각'과 같은 중첩 된 루프보다이 작업을 수행하는보다 효율적인 방법이 있습니다 :
for index1, c11, c12, in df.itertuples():
for index2, c21, c22 in df.itertuples():
mtx[index1][index2] = float(c12) * float(c22)
mtx
array([[ 1., 2., 3., 4., 5.],
[ 2., 4., 6., 8., 10.],
[ 3., 6., 9., 12., 15.],
[ 4., 8., 12., 16., 20.],
[ 5., 10., 15., 20., 25.]])
어떤 아이디어라도 높이 평가할 것입니다! 감사! (이 예는 *
입니다,하지만 당신은 +,-
또는 /
를 원한다면 당신은 단지 마지막 행에서 작업을 변경할 수 있습니다) 그 결과는
import numpy as np
import pandas as pd
d = {'col1': ['a','b','c','d','e'], 'col2': [1,2,3,4,5]}
df = pd.DataFrame(d)
a=np.array([df.col2.tolist()])
a.T*a
: 당신은 다음과 같은 작업을 수행 할 수 *,+,-,/
같은 oprations를 들어