首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取dataframe中特定数据点的行和列标签

获取dataframe中特定数据点的行和列标签
EN

Stack Overflow用户
提问于 2019-04-19 12:43:25
回答 1查看 64关注 0票数 4

我正在尝试获取在max_val处收敛的列和行的行和列标签。本质上,我测量的是从一个列条目到另一个列条目的增长率。

代码语言:javascript
运行
AI代码解释
复制
def find_max(area):
    # YOUR CODE HERE
    data=pd.read_csv('Canada.csv')
    df = pd.DataFrame(data)

    #case insensitive
    prov_lower = province.lower()
    data['province'] = df['province'].astype(str).str.lower()

    #get percent change
    if prov_lower in data['province'].values:
        data=data[data['province']==province]
        df_match_pct=data[data.columns[3:-1]].diff(axis='columns').abs()

        #find max
        max_val=df_match_pct.max()
        max_val=max_val.max()

        #select column and row of max value
        c_r = df_match_pct.iloc[0:9] == max_val and df_match_pct[df_match_pct.iloc[0:9] == max_val]
        #how to get the column and row label of this?

    else:
        raise ValueError()

    return max_val,c_r



find_max('alberta')

我希望得到分类为'alberta‘的数据列与其对应行(特定区域位置)之间的最大差值,以及导致这种变化的年份(记录最大变化的两年)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 12:58:19

IIUC,你可以使用numpy.argwhere

代码语言:javascript
运行
AI代码解释
复制
c_r = [(c, r) for r, c in  np.argwhere(df_match_pct.values == max_val)][0]

或者,如果您需要实际的索引和列标签,请使用:

代码语言:javascript
运行
AI代码解释
复制
c_r = [(df_match_pct.index[c], df_match_pct.columns[r]) for r, c in  np.argwhere(df_match_pct.values == max_val)][0]

或者,您可以将DataFrame.eqDataFrame.idxmax()方法链接起来:

代码语言:javascript
运行
AI代码解释
复制
c_r = (df.eq(max_val).idxmax(1).idxmax(1),
       df.eq(max_val).idxmax().idxmax())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55762049

复制
相关文章

相似问题

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