我想在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
这甚至可能吗?
答案 0 :(得分:1)
只需将平均值添加为列:
df2 = df.stack().unstack(-2)
df2["mean"] = df2.mean(axis=1)
然后您可以重新排序级别并转置数据框。