Python pandas如何取上一行Hi值 实现(Hi+Hi_1)*qi公式计算
实现方法
你需要的「取上一行Hi字段值」的逻辑,用pandas内置的shift()方法即可实现,该方法可以按指定步长偏移序列,偏移后空值默认填充NaN,和Excel中首行无上行数据时的计算逻辑一致。
直接替换你代码里的???部分即可:
df['gini_coef'] = (df['Hi'] + df['Hi'].shift(1)) * df['qi']
常见场景调整
- 如果需要给首行的上一行Hi设置默认值(比如设为0),可以给shift传入填充参数:
# 首行无上行数据时,Hi_1默认取0 df['gini_coef'] = (df['Hi'] + df['Hi'].shift(1, fill_value=0)) * df['qi'] - 如果数据需要按指定维度分组、仅在组内取上一行值(比如不同年份、不同类别下不能跨组取上一行),需要先分组再偏移:
# 示例:按group_col字段分组,组内单独取上一行Hi df['gini_coef'] = (df['Hi'] + df.groupby('group_col')['Hi'].shift(1)) * df['qi'] - 计算前请确认
Hi、qi字段为数值类型,如果是读入时自动识别为字符串类型,先做类型转换避免计算报错:df['Hi'] = pd.to_numeric(df['Hi']) df['qi'] = pd.to_numeric(df['qi'])
内容的提问来源于stack exchange,提问作者Sina
相关产品推荐
相关产品推荐

