python - 用 python 在 Pandas dataframes内索引 Pandas dataframes

  显示原文与译文双语对照的内容

我在dataframe里面有一系列的dataframes 。

顶层dataframe的结构如下:


 24hr 48hr 72hr
D1 x x x
D2 x x x 
D3 x x x

在每个案例中,x 是一个用 pandas.read_excel() 创建的dataframe

每个x dataframe中的列有标题'平均容器长度',其中有三个条目( 例如 。 列中的行。索引。

我想返回的是列'平均容器长度'的平均值。 我还对如何返回该列中的特定单元格感兴趣。 我知道有一个. mean 方法用于 Pandas dataframes,但是我无法找出索引语法使用它。

下面是一个示例


import pandas as pd

a = {'Image name' : ['Image 1', 'Image 2', 'Image 3'], 'threshold' : [20, 25, 30], 'Average Vessels Length' : [14.2, 22.6, 15.7] }
b = pd.DataFrame(a, columns=['Image name', 'threshold', 'Average Vessels Length'])

c = pd.DataFrame(index=['D1','D2','D3'], columns=['24hr','48hr','72hr'])
c['24hr']['D1'] = a
c['48hr']['D1'] = a
c['72hr']['D1'] = a
c['24hr']['D2'] = a
c['48hr']['D2'] = a
c['72hr']['D2'] = a
c['24hr']['D3'] = a
c['48hr']['D3'] = a
c['72hr']['D3'] = a

这将返回列'平均容器长度'中值的平均值:


print b['Average Vessels Length'].mean()

这将返回 24.D1.'平均容器长度'的所有值。'


print c['24hr']['D1']['Average Vessels Length']

这里操作不起作用:


print c['24hr']['D1']['Average Vessels Length'].mean()

我无法确定如何访问 ['24hr'] ['D1'] ['Average Vessels Length'] 中的任何特定值

最终我想从 ['Average Vessels Length']. mean()的每个列中取平均值,并将它的除以相应的D1 ['Average Vessels Length']. mean( )

任何帮助都将非常有用。

时间: 作者:

我假设,既然你说过大型dataframe的每个元素都是 dataframe,那么你的示例数据应该是:


import pandas as pd

a = {'Image name' : ['Image 1', 'Image 2', 'Image 3'], 'threshold' : [20, 25, 30], 'Average Vessels Length' : [14.2, 22.6, 15.7] }
b = pd.DataFrame(a, columns=['Image name', 'threshold', 'Average Vessels Length'])

c = pd.DataFrame(index=['D1','D2','D3'], columns=['24hr','48hr','72hr'])
c['24hr']['D1'] = b
c['48hr']['D1'] = b
c['72hr']['D1'] = b
c['24hr']['D2'] = b
c['48hr']['D2'] = b
c['72hr']['D2'] = b
c['24hr']['D3'] = b
c['48hr']['D3'] = b
c['72hr']['D3'] = b

要获取每个单元格的平均值,可以使用 applymap,它将函数映射到DataFrame的每个单元格:


cell_means = c.applymap(lambda e: e['Average Vessels Length'].mean())
cell_means
Out[14]: 
 24hr 48hr 72hr
D1 17.5 17.5 17.5
D2 17.5 17.5 17.5
D3 17.5 17.5 17.5

一旦你有了那些你可以获得的列意味着 等等,并继续进行规范化:


col_means = cell_means.mean(axis=0)
col_means
Out[11]: 
24hr 17.5
48hr 17.5
72hr 17.5
dtype: float64

作者:
...