簡體   English   中英

獲取數據框中特定數據點的行和列標簽

[英]getting the row and column label of the specific data point in dataframe

我試圖獲取在max_val收斂的列和行的行和列標簽。 本質上,我正在衡量從一個列條目到另一個列條目的增長率。

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”的數據的列與其對應的行(特定區域位置)之間的差值的最大值,以及導致這種變化的年份(記錄最大變化的兩年)之間的差值的最大值

IIUC,您可以使用numpy.argwhere

c_r = [(c, r) for r, c in  np.argwhere(df_match_pct.values == max_val)][0]

或者,如果您需要實際的索引和列標簽,請使用:

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()方法:

c_r = (df.eq(max_val).idxmax(1).idxmax(1),
       df.eq(max_val).idxmax().idxmax())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM