Pandas不同DataFrame间进行数值运算得到NaN如何解决?
问题原因
Pandas对Series做数值运算时默认按索引对齐后再计算。你分别从两个DataFrame筛选出的费城76人队数据,在teamdf中的行索引为4,在advdf中的行索引为13,两个Series没有共同索引,因此相乘后对应位置全部返回NaN。
解决方法
方法1:提取单个数值后运算
如果确定筛选结果只有1行数据,可直接提取标量值再计算:
t1_fgp = team1df['FG%'].iloc[0] t1a_ortg = team1adf['ORtg'].iloc[0] result = t1_fgp * t1a_ortg
方法2:重置索引后运算
筛选数据时统一重置索引,消除原始索引的影响:
team1df = teamdf[teamdf.Team == 'Philadelphia 76ers*'].reset_index(drop=True) team1adf = advdf[advdf.Team == 'Philadelphia 76ers*'].reset_index(drop=True) result = team1df['FG%'] * team1adf['ORtg']
方法3:先合并DataFrame再运算(更推荐,适合多球队批量计算)
按球队名称合并两个DataFrame,后续所有计算都不会出现索引对齐问题:
merged_df = pd.merge(teamdf, advdf, on='Team') # 提取76人数据计算 philadelphia_data = merged_df[merged_df.Team == 'Philadelphia 76ers*'] result = philadelphia_data['FG%'] * philadelphia_data['ORtg']
内容的提问来源于stack exchange,提问作者MKHN15
相关产品推荐
相关产品推荐

