Ich habe einen Pandas-Datenrahmen mit einem Multiindex. Stufe 0 ist "Belastung" und Stufe 1 ist "JGI-Bibliothek". Jedem 'Strain' sind mehrere 'JGI library' Spalten zugeordnet. Ich würde gerne eine Lambda-Funktion verwenden, um einen t-Test anzuwenden, um zwei verschiedene Stämme zu vergleichen. Zur Problembehandlung habe ich eine Zeile meines Datenrahmens mit dem Befehl .iloc [0] erstellt.Zugreifen auf Gruppen in Pandas Lambda-Funktion
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]
Dies funktioniert wie erwartet. Jetzt versuche ich es meinen ganzen Datenrahmen anzuwenden
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])
Jetzt habe ich eine Fehlermeldung sagen: „Valueerror: (‚Level Name Stamm ist nicht der Name des Index‘,‚trat bei Index (LL1004, BCHAC) ') "
' LL1004 'ist eine' Belastung ', aber Pandas scheint sich dessen nicht bewusst zu sein. Sieht so aus, als ob der Multiindex nicht korrekt an die Lambda-Funktion übergeben wurde? Gibt es eine bessere Möglichkeit, Lambda-Funktionen zu beheben als mit .iloc [0]?
habe ich eine Kopie meines Jupyter Notebook und eine Excel mit dem countsDf4 Datenrahmen auf Github https://github.com/danolson1/pandas_ttest
Danke, Dan
'Achse = 1' löste das Problem. Und danke für den anderen Kommentar. –