首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python索引pandas dataframe中的pandas dataframe

用python索引pandas dataframe中的pandas dataframe
EN

Stack Overflow用户
提问于 2015-03-30 08:06:08
回答 1查看 430关注 0票数 0

我在一个数据帧中有一系列的数据帧。

顶层数据帧的结构如下:

代码语言:javascript
复制
    24hr   48hr   72hr
D1  x      x      x
D2  x      x      x 
D3  x      x      x

在每种情况下,x都是使用pandas.read_excel()创建的数据帧

每个x数据帧中的一列具有标题‘平均血管长度’,并且在该列中有三个条目(即行、索引)。

我想返回的是“平均血管长度”列的平均值。我还对如何返回该列中的特定单元格感兴趣。我知道有一个用于pandas数据帧的.mean方法,但我不知道使用它的索引语法。

下面是一个例子

代码语言:javascript
复制
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

这将返回“平均血管长度”列中的值的平均值:

代码语言:javascript
复制
print b['Average Vessels Length'].mean()

这将返回以24小时、D1、‘平均血管长度’为单位的所有值

代码语言:javascript
复制
print c['24hr']['D1']['Average Vessels Length']

这不起作用:

代码语言:javascript
复制
print c['24hr']['D1']['Average Vessels Length'].mean()

我不知道如何访问c‘24hr’‘平均血管长度’中的任何特定值

最后,我想从Dx‘平均血管长度’.means()的每一列中取平均值,并将其除以相应的d1‘平均血管长度’. mean ()

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-03-30 09:40:23

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

代码语言:javascript
复制
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的每个单元格:

代码语言:javascript
复制
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

一旦你有了这些,你就可以得到列的均值等,并继续通过均值进行标准化:

代码语言:javascript
复制
col_means = cell_means.mean(axis=0)
col_means
Out[11]: 
24hr    17.5
48hr    17.5
72hr    17.5
dtype: float64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29336500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档