我有一个相当复杂的数据帧,看起来像这样:熊猫数据框计算
df = pd.DataFrame({'0': {('Total Number of End Points', '0.01um', '0hr'): 12,
('Total Number of End Points', '0.1um', '0hr'): 8,
('Total Number of End Points', 'Control', '0hr'): 4,
('Total Number of End Points', '0.01um', '24hr'): 18,
('Total Number of End Points', '0.1um', '24hr'): 12,
('Total Number of End Points', 'Control', '24hr'): 6,
('Total Vessel Length', '0.01um', '0hr'): 12,
('Total Vessel Length', '0.1um', '0hr'): 8,
('Total Vessel Length', 'Control', '0hr'): 4,
('Total Vessel Length', '0.01um', '24hr'): 18,
('Total Vessel Length', '0.1um', '24hr'): 12,
('Total Vessel Length', 'Control', '24hr'): 6},
'1': {('Total Number of End Points', '0.01um', '0hr'): 12,
('Total Number of End Points', '0.1um', '0hr'): 8,
('Total Number of End Points', 'Control', '0hr'): 4,
('Total Number of End Points', '0.01um', '24hr'): 18,
('Total Number of End Points', '0.1um', '24hr'): 12,
('Total Number of End Points', 'Control', '24hr'): 6,
('Total Vessel Length', '0.01um', '0hr'): 12,
('Total Vessel Length', '0.1um', '0hr'): 8,
('Total Vessel Length', 'Control', '0hr'): 4,
('Total Vessel Length', '0.01um', '24hr'): 18,
('Total Vessel Length', '0.1um', '24hr'): 12,
('Total Vessel Length', 'Control', '24hr'): 6},
'2': {('Total Number of End Points', '0.01um', '0hr'): 12,
('Total Number of End Points', '0.1um', '0hr'): 8,
('Total Number of End Points', 'Control', '0hr'): 4,
('Total Number of End Points', '0.01um', '24hr'): 18,
('Total Number of End Points', '0.1um', '24hr'): 12,
('Total Number of End Points', 'Control', '24hr'): 6,
('Total Vessel Length', '0.01um', '0hr'): 12,
('Total Vessel Length', '0.1um', '0hr'): 8,
('Total Vessel Length', 'Control', '0hr'): 4,
('Total Vessel Length', '0.01um', '24hr'): 18,
('Total Vessel Length', '0.1um', '24hr'): 12,
('Total Vessel Length', 'Control', '24hr'): 6}})
print(df)
0 1 2
Total Number of End Points 0.01um 0hr 12 12 12
24hr 18 18 18
0.1um 0hr 8 8 8
24hr 12 12 12
Control 0hr 4 4 4
24hr 6 6 6
Total Vessel Length 0.01um 0hr 12 12 12
24hr 18 18 18
0.1um 0hr 8 8 8
24hr 12 12 12
Control 0hr 4 4 4
24hr 6 6 6
我试图通过相应的控制水平平均列来划分每个值。我尝试了以下,但它没有奏效。
df2 = df.divide(df.xs('Control', level=1).mean(axis=1), axis='index')
我对Python和熊猫很新,所以我倾向于用MS Excel术语思考这个问题。
如果它是在Excel中为A1的式( '0.01um', '0HR' '的终点总数',0)将看起来是:
=A1/AVERAGE($A$5:$C$5)
B1(“总的终点, '0.01um', '0HR号码',1)将是:
=B1/AVERAGE($A$5:$C$5)
和A2( '终点', '0.01um', '24小时',0的总数)将是
=A1/AVERAGE($A$6:$C$6)
这个例子的期望的结果将是:
0 1 2
Total Number of End Points 0.01um 0hr 3 3 3
24hr 3 3 3
0.1um 0hr 2 2 2
24hr 2 2 2
Control 0hr 1 1 1
24hr 1 1 1
Total Vessel Length 0.01um 0hr 3 3 3
24hr 3 3 3
0.1um 0hr 2 2 2
24hr 2 2 2
Control 0hr 1 1 1
24hr 1 1 1
注:有很多指标和列的真实数据。
你能提供所需输出的一个例子? – Andrew
当我把你的数据放到DataFrame中时,它与你在print(df)中得到的不同。 df = ...和print(df)是两个不同的DataFrame。您的打印(df)与上面的代码无关。您的输入栏为['a','b'],但您的印刷栏为[0,1,2]。你能否全部保持一致?谢谢。 –
@MarkGraph哎呀..你是对的..我会修复它。 – agf1997