일부 데이터 분석을 위해 DataFrame을 제안하려고하고 있으며, 하나의 데이터 프레임에서 일반 인덱스와 다중 인덱스를 함께 처리 할 수있는 데이터 프레임을 얻는 것이 실제로 도움이됩니다.PANDAS DataFrame에서 다중 인덱스와 인덱스 결합하기
각 환자마다 다양한 유형의 데이터 (T1avg, T2avg 등)가 6 개 있습니다. 의는 (AN ipython 노트북에서)이 dataframe1을 부르 자 : 출력의
import pandas
dat0 = numpy.zeros([6])
dat1 = numpy.zeros([6])
pat0=(['NecS3Hs05']*6)
pat1=(['NecS3Hs06']*6)
slc = (['Slice ' + str(x) for x in xrange(dat0.shape[-1])])
ind = zip(*[pat0+pat1,slc+slc])
named_ind = pandas.MultiIndex.from_tuples(ind, names = ['Patients','Slices'])
ser = pandas.Series(numpy.append(dat0,dat1),index = named_ind)
df = pandas.DataFrame(data=ser, columns=['T1avg'])
이미지 : df1
가 나는 또한 각 환자에 대해 가지고, 다양한 정보 문자열 (종양의 종류, 영상 세션 수, 치료 유형) :
pats = ['NecS3Hs05','NecS3Hs05']
tx = ['Control','Treated']
Ttype = ['subcutaneous','orthotopic']
NSessions = ['2','3']
cols = ['Tx Group', 'Tumour Type', 'Imaging Sessions']
dat = numpy.array([tx,Ttype,NSessions]).T
df2 = pandas.DataFrame(dat, index=pats,columns=cols)
[나뿐만 아니라 여기에 사진을 게시하고 싶습니다,하지만 난 그렇게 할 최소 10 평판 필요] 이상적으로
을, 내가 원하는 다음과 같이 보이는 dataframe을 원하는 출력의
이미지 (이미지 죄송 편집기에서 밖으로 스케치) : df-desired
하지만
com = df.append(df2)
내가 얻을의 append 명령을 사용하려고 할 때 뭔가 원하지 않는 점은, df에서 설정 한 MultiIndex가 사라지고 형식 튜플 ('NecS3Hs05, Slice 0'등 ...)의 간단한 인덱스로 대체되었습니다. df2의 색인은 'NecS3Hs05'와 동일합니다.
PANDAS와 (과) 가능한가요 아니면 내가 여기 잘못된 나무를 짖고 있습니까? 또한, 데이터 프레임에 Patient 속성을 저장하는 것이 좋습니다 (즉,이 unpandas입니까?). 모든 것을 단순한 인덱스로 유지하는 대신 데이터 프레임의 요소 안에 N-d 어레이를 저장하는 것이 좋을 것이라고 생각합니다. 내가 좋아하는 뭔가를 시도하는 경우 예를 들어
:
:com['NecS3Hs05','T1avg']
을 나는 6
를 렌 모양의 배열/튜플/싶어 난 종양의 유형을 얻을 때
com['NecS3Hs05','Tumour Type']
'피하'문자열이 표시됩니다. 분명히 데이터 프레임의 멋진 기능을 유지하려고합니다. PANDAS가 올바른 방법 인 것처럼 보입니다. 데이터 프레임을 설정하는 방법에 대해 조금 더 이해해야합니다.
희망 사항이 있습니다. 현명한 질문, 그렇지 않다면, 나는 그것을 다시 형성하게되어 기쁠 것이다.
P.S.를 얻을 수 있습니다 항목을 채우고 MultiIndex를이 방법으로 설정하려면 ([ 'NecS3Hs05'] * 6) '잘못된'느낌이 들지만 누구에게 더 좋은 방법이 있습니까? – Firas
난 종양 등 정보가 여러 행에 걸쳐 복제 된 일반 DataFrame을 사용합니다. – BrenBarn
@BrenBarn 나는 df-desired에서 OP가 나타내는 것을 믿습니다. – DrSAR