나는 멀티 인덱스가있는 팬더 데이터 프레임을 가지고 있습니다. 레벨 0은 '스트레인'이고 레벨 1은 'JGI 라이브러리'입니다. 각 'Strain'에는 여러 개의 'JGI 라이브러리'열이 있습니다. 두 개의 다른 변형을 비교하기 위해 t- 테스트를 적용하기 위해 람다 함수를 사용하고 싶습니다. 문제를 해결하기 위해 필자는 .iloc [0] 명령을 사용하여 데이터 프레임 한 행을 가져 왔습니다.팬더 람다 함수 그룹에 액세스하기
row = pvalDf.iloc[0]
parent = 'LL1004'
child = 'LL345'
ttest_ind(row.groupby(level='Strain').get_group(parent), row.groupby(level='Strain').get_group(child))[1]
예상대로 작동합니다. 지금은
parent = 'LL1004'
child = 'LL345'
pvalDf = countsDf4.apply(lambda row: ttest_ind(row.groupby(level='Strain').get_group(parent), row.groupby(level='Strain').get_group(child))[1])
가 지금은 ValueError를 "라는 오류 메시지가 얻을 내 모든 dataframe에 적용하려고 : ('레벨 이름의 변형이 인덱스의 이름이 아닌'을 '지수 (LL1004, BCHAC에서 발생) ') "
'LL1004 '는'변형 '이지만 팬더는이 사실을 인식하지 못합니다. Multiindex가 람다 함수에 올바르게 전달되지 않은 것 같습니다. .iloc [0]을 사용하는 것보다 람다 함수 문제를 해결할 더 좋은 방법이 있습니까?
나는 나의 Jupyter 노트북의 사본을 넣어 엑셀은 Github에서의 countsDf4의 dataframe 더 간단하게 대해 어떻게 https://github.com/danolson1/pandas_ttest감사합니다, 댄
'축 = 1'이 문제를 해결했습니다. 그리고 다른 코멘트도 주셔서 감사합니다. –