如何在DataFrame中选取百分比变化绝对值最大的条目
找出百分比变化绝对值最大的年份和品牌
实现步骤
计算百分比变化绝对值
用pct_change()计算各品牌的环比变化,再取绝对值聚焦变化幅度(忽略涨跌方向):import pandas as pd # 构建示例DataFrame df = pd.DataFrame( {'Mercedes': [100, 110, 170, 150], 'BMW': [400, 490, 470, 420]}, index=[2010, 2011, 2012, 2013] ) # 计算百分比变化的绝对值 pct_abs = df.pct_change().abs()转换数据格式
把宽表转成便于排序的长表,同时剔除无上年对比数据的2010年:# 将年份转为列,转成长格式 long_data = pct_abs.reset_index().rename(columns={'index': 'Year'}) long_data = pd.melt(long_data, id_vars='Year', var_name='Brand', value_name='Change') # 移除NaN行(2010年无对比数据) long_data = long_data.dropna()排序并输出目标格式
按变化幅度降序排列后,遍历输出指定格式的结果:# 按变化幅度降序排序 sorted_result = long_data.sort_values(by='Change', ascending=False).reset_index(drop=True) # 输出结果 for rank, row in sorted_result.iterrows(): print(f"{rank} {row['Brand']} {row['Year']}")
运行结果
0 BMW 2011 1 Mercedes 2012 2 BMW 2013
内容的提问来源于stack exchange,提问作者Xtiaan
相关产品推荐
相关产品推荐

