다음과 같은 데이터 프레임이 있다고 가정합니다.
df=
p1 v1 p2 v2 p3 v3 p4 v4 p5 v5 p6 v6
0 3 6 5 8 4 4 8 4 9 6 0 0
1 5 0 5 9 0 8 8 5 5 2 2 9
2 6 9 8 6 9 9 9 2 8 4 2 6
3 4 1 8 0 5 9 0 2 1 2 4 8
4 1 4 8 1 3 1 4 9 6 2 6 7
5 5 4 6 5 5 2 3 0 5 5 6 4
6 4 4 9 0 2 1 7 0 1 0 8 8
7 9 1 7 3 5 4 4 4 8 9 3 8
8 1 5 0 5 4 3 6 5 2 3 1 4
9 9 1 7 6 5 3 6 8 8 4 7 5
10 1 6 5 8 2 5 1 5 3 4 5 8
11 8 7 6 6 9 3 5 5 9 7 6 7
p 및 v 는 다른 샘플(예: 1, 2, 3.. 등)에 대해 측정된 특정 매개변수입니다. 지금은 모든 열을 곱하려면 "P_" 숫자 와 사용 diff()
의 모든 컬럼에 "V_을" 그 칼럼의 다음 행을 뺀로.
Dv1 , Dv2 출력 등과 같은 해당 샘플 이름과 수학 연산의 첫 글자를 사용하여 동일한 DataFrame에 결과를 저장하고 싶습니다 df. diff('v1'), df.diff('v2')
. 마찬가지로 p 열의 경우 Mp1 과 같습니다 .
열마다 수동으로 연산을 수행하고 결과를 저장할 수는 있지만(샘플 수가 너무 많기 때문에) 지루하므로 for 루프와 같은 조건을 사용하여 자동화하고 싶습니다.
pandas DataFrame의 여러 열에서 수학 연산(빼기, 곱하기 또는 나누기)을 수행하고 결과를 열 이름과 수학 연산 이름의 조합을 사용하여 새 열로 동일한 DataFrame에 저장하라는 제안.
새 DataFrame은 다음과 같아야 합니다 p1 Mp1 v1 DV1 p2 Mp2 v2 Dv2 p3 Mp3 v3 Dv3.......
.
이 시도:
# Find all columns that starts with p and followed by a number
p = df.columns[df.columns.str.match('p\d')]
# Find all columns that starts with v and followed by a number
v = df.columns[df.columns.str.match('v\d')]
# Multiply the p columns by 2
mp = df[p].mul(2).add_prefix('M')
# Take a diff of the v columns
dv = df[v].diff().add_prefix('D')
# The display order of the columns
cols = [f'{j}{i}' for i in range(1,7) for j in ['p', 'Mp', 'v', 'Dv']]
# The final result
final = pd.concat([df, mp, dv], axis=1)[cols]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다