我试图获取在max_val收敛的列和行的行和列标签。本质上,我正在衡量从一个列条目到另一个列条目的增长率。 p>
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')
我希望获得分类为“艾伯塔省”的数据的列与其对应的行(特定区域位置)之间的差的最大值,以及导致这一变化的年份(记录最大变化的两年)
答案 0 :(得分:1)
IIUC,您可以使用numpy.argwhere
:
<div id="options"></div>
<div id="info"></div>
或者,如果您需要实际的索引和列标签,请使用:
c_r = [(c, r) for r, c in np.argwhere(df_match_pct.values == max_val)][0]
或者,您可以链接DataFrame.eq
和DataFrame.idxmax()
方法:
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]