Pandas查找依据pd.输入

2024-09-28 21:11:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数值间隔的pandas数据帧(局部放电间隔),例如年龄间隔,以及与之相关的一些值。现在,给定一个年龄,我想在相应的年龄间隔中查找值。在

这样一个数据帧的例子可以得到如下

df = pd.DataFrame({
    'age'    : [ int(random.random()*20) for x in range(50) ],
    'values' : [ random.random() for x in range(50) ]
    })

df['Age10bin'] = pd.qcut(df['age'],10)
aggdf = df.groupby('Age10bin').agg({'values' : { 'Avg_values': 'mean', 'Count': 'count'}})
^{pr2}$

现在假设我有一个agex:我想检索包含X的age bin的“Avg_值”

我尝试了以下方法:

aggdf.loc[ (aggdf.Age10bin.left <= X ) & ( X <= aggdf.Age10bin.right), : 'Avg_values'].max()

但它告诉我“'Series'对象没有'left'属性”。我也尝试过不使用.left或.right进行比较,但它告诉我我无法比较标量和范畴。在


Tags: 数据indfforage间隔rangerandom
2条回答

首先稍微改变创建aggdf的方式,以确保columns中没有多个索引

aggdf = df.groupby('Age10bin')['values'].agg({ 'Avg_values': 'mean', 'Count': 'count'})

然后我们使用.loc

^{pr2}$

您只需:

aggdf.loc[19, ('values', 'Avg_values')]

它给您(对于random.seed(10)生成的数据):

^{pr2}$

相关问题 更多 >