2
데이터 심오한 질문 : 어떻게 지나치게 넓은 DataFrame에서 특정 변수를 선택적으로 피벗시킬 수 있습니까?파이썬 팬더 : 와이드 폼 DataFrame의 특정 변수 피벗
df1 = pd.DataFrame(
[[1,'a','b',.1,-1,10],
[2,'a','b',.2,-3,12],
[3,'c','d',.3,-5,14]],
columns=['sample','id1','id2','x','y1','y2'])
print df1
# sample id1 id2 x y1 y2
#0 1 a b 0.1 -1 10
#1 2 a b 0.2 -3 12
#2 3 c d 0.3 -5 14
으로 : X가 복사되었는지
# sample id position x y
#0 1 a 1 0.1 -1
#1 1 b 2 0.1 10
#2 2 a 1 0.2 -3
#3 2 b 2 0.2 12
#4 3 c 1 0.3 -5
#5 3 d 2 0.3 14
주, 및 Y 위치와 정렬
예를 들어, I는 회전하고 싶다.
스트레이트 pd.melt()
은 혼합 변수와 데이터 형식을 쉽게 선택 취소하여 와이드 형식으로 쉽게 되돌릴 수 없습니다.
print pd.melt(df1, id_vars='sample')
# sample variable value
#0 1 id1 a
#1 2 id1 a
#2 3 id1 c
#3 1 id2 b
#4 2 id2 b
#5 3 id2 d
#6 1 x 0.1
#7 2 x 0.2
#8 3 x 0.3
#9 1 y1 -1
#10 2 y1 -3
#11 3 y1 -5
#12 1 y2 10
#13 2 y2 12
#14 3 y2 14
어떤 조언이 필요합니까? 감사!
첫째을, 멋진 대답. df.columns.str.extract()가 나에게 처음부터 새롭게 추가 된 것입니다 : 컬럼 이름이 더 복잡하다면, 예를 들어 '['id1, f22 ','id2, f22 ','var50_a1 ','var50_a2 ']'. 올바른 var 이름/위치를 추출하기 위해 정규 표현식을 사용해야할까요? –
정규식이 혼합 된 패턴 열을 쉽게 처리 할 수 있다고 생각하지 않습니다. 예를 들어 'a1, a2, b1, b2, c1, c2' 또는 var1_a1, var1_a2와 같이 다중 인덱스로 분할하는 명확한 패턴이 있어야합니다. , var2_a1, var2_a2' 둘 다 괜찮을 것입니다. 후자이지만 혼합되지 않은 정규 표현식은'([^ _] +) _ ([^ _] +)'이어야합니다. 그러니 열 이름이 미치지 않게하는 것이 도움이 될 것입니다. – Psidom
추출하기 전에 열의 이름을 바꿀만큼 쉽고 간단합니다. –