/ / Добавяне на средства към pandas dataframe - python, python-2.7, pandas

Добавяне на средства към панда за данни - python, python-2.7, pandas

Искам да добавя средствата на стойностите в рамката с данни за панда към рамката на данните, така че мога да ги запиша в един единствен 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)

След това можете да пренаредите нивата и да транспонирате кадъра от данни.