Искам да добавя средствата на стойностите в рамката с данни за панда към рамката на данните, така че мога да ги запиша в един единствен Excel файл.
Имам следната рамка с данни:
df = pd.DataFrame({"a": {("0hr", "0.01um", 0): 12,
("0hr", "0.01um", 1): 10,
("0hr", "0.1um", 0): 8,
("0hr", "0.1um", 1): 6,
("0hr", "Control", 0): 4,
("0hr", "Control", 1): 2,
("24hr", "0.01um", 0): 18,
("24hr", "0.01um", 1): 15,
("24hr", "0.1um", 0): 12,
("24hr", "0.1um", 1): 9,
("24hr", "Control", 0): 6,
("24hr", "Control", 1): 3},
"b": {("0hr", "0.01um", 0): 42,
("0hr", "0.01um", 1): 35,
("0hr", "0.1um", 0): 28,
("0hr", "0.1um", 1): 21,
("0hr", "Control", 0): 14,
("0hr", "Control", 1): 7,
("24hr", "0.01um", 0): 30,
("24hr", "0.01um", 1): 25,
("24hr", "0.1um", 0): 20,
("24hr", "0.1um", 1): 15,
("24hr", "Control", 0): 10,
("24hr", "Control", 1): 5}})
Мога да изчисля средствата от 0 и 1 за всеки индекс на по-високо ниво чрез:
df = df.reorder_levels([2,1,0]).unstack().unstack()
dfMean = df.mean()
print(df)
a b
0hr 24hr 0hr 24hr
0.01um 0.1um Control 0.01um 0.1um Control 0.01um 0.1um Control 0.01um 0.1um Control
0 12 8 4 18 12 6 42 28 14 30 20 10
1 10 6 2 15 9 3 35 21 7 25 15 5
print(dfMean)
a 0hr 0.01um 11.0
0.1um 7.0
Control 3.0
24hr 0.01um 16.5
0.1um 10.5
Control 4.5
b 0hr 0.01um 38.5
0.1um 24.5
Control 10.5
24hr 0.01um 27.5
0.1um 17.5
Control 7.5
Искам да поставя dfMean в DF DataFrame, така че мога да напиша цялата дата на един лист Excel ... Какъв би бил най-добрият начин да постигнем това? Може би DataFrame изглежда така?
a b
0hr 24hr 0hr 24hr
0.01um 0.1um Control 0.01um 0.1um Control 0.01um 0.1um Control 0.01um 0.1um Control
0 12 8 4 18 12 6 42 28 14 30 20 10
1 10 6 2 15 9 3 35 21 7 25 15 5
mean 11.0 7.0 3.0 16.5 10.5 4.5 38.5 24.5 10.5 27.5 17.5 7.5
Възможно ли е това дори?
Отговори:
1 за отговор № 1Трябва само да добавите средната стойност като колона:
df2 = df.stack().unstack(-2)
df2["mean"] = df2.mean(axis=1)
След това можете да пренаредите нивата и да транспонирате кадъра от данни.