Python实现DataFrame递增行的均值列计算(以DF_NBA为例)
通用MeanGScore均值计算方案(适配任意行数)
先确认下你的数据结构:执行 DF_NBA.head(4) 能看到前4行数据,如下所示:
接下来给你两种实现思路,都能完美适配任意行数的场景:
方法1:直接用Pandas内置方法(最简方案)
Pandas的mean()方法本身就支持任意行数的列均值计算,不管你的DataFrame有10行还是10000行,直接一行代码搞定:
# 计算MeanGScore列的整体均值(自动适配所有行数) meangscore_mean = DF_NBA['MeanGScore'].mean()
- 这个方法默认会忽略列中的空值(
NaN),如果需要把空值算入(当作0),可以加上参数:DF_NBA['MeanGScore'].mean(skipna=False) - 如果只想计算前
n行的均值,只需要先取前n行再调用mean():n = 4 # 这里n可以是任意正整数 top_n_mean = DF_NBA['MeanGScore'].head(n).mean()
方法2:自定义函数(灵活适配特殊需求)
如果需要更灵活的逻辑(比如自动处理n超过总行数的情况),可以写个自定义函数:
def get_meangscore_mean(df, n=None): """ 计算MeanGScore列的均值,支持指定前n行或全部行 :param df: 目标DataFrame(即你的DF_NBA) :param n: 可选,指定计算前n行;默认None则计算全部行 :return: 均值结果 """ # 处理n超过总行数的情况,避免报错 if n is not None: n = min(n, len(df)) target_series = df['MeanGScore'].head(n) else: target_series = df['MeanGScore'] # 计算均值,可根据需求调整空值处理逻辑 return target_series.mean(skipna=True) # 调用示例 all_rows_mean = get_meangscore_mean(DF_NBA) # 全部行的均值 top_5_mean = get_meangscore_mean(DF_NBA, n=5) # 前5行的均值
这个函数会自动判断n的合理性,哪怕你传入的n比DataFrame总行数还大,也会自动用全部数据计算,不会出问题。
内容的提问来源于stack exchange,提问作者Edg
相关产品推荐
相关产品推荐

