Python DataFrame合并、求平均及自定义列实现问询
解决DataFrame合并及自定义列名、Rank均值计算问题
首先修正你提供的字典语法错误(Home行末尾缺少逗号,会导致语法报错),然后按以下步骤实现需求:
步骤1:创建并预处理两个DataFrame
先将字典转为pandas DataFrame,同时给非Rank、Team的列添加指定后缀:
import pandas as pd # 修正语法错误后的原始数据 df_1_dict = { 'Rank': [64, 102, 34], 'Team': ["AR Lit Rock", "Abl Christian", "Air Force"], '2022': [73.8, 71.5, 67.2], 'L3': [71.3, 77.3, 69.0], 'Home': [78.2, 73.6, 70.1], 'Away': [71.4, 70.2, 62.2], } df_2_dict = { 'Rank': [354, 284, 83], 'Team': ["AR Lit Rock", "Abl Christian", "Air Force"], '2022': [80.7, 74.0, 67.0], 'L3': [78.7, 72.0, 75.3], 'Home': [75.3, 69.1, 65.0], 'Away': [83.7, 77.1, 70.3], } # 转为DataFrame并添加后缀 df1 = pd.DataFrame(df_1_dict).add_suffix('_PF').rename(columns={'Team_PF': 'Team', 'Rank_PF': 'Rank_PF'}) df2 = pd.DataFrame(df_2_dict).add_suffix('_PA').rename(columns={'Team_PA': 'Team', 'Rank_PA': 'Rank_PA'})
步骤2:合并DataFrame并计算Rank均值
通过merge按Team合并两个DataFrame,再计算Rank的平均值,最后调整列顺序:
# 按Team合并两个DataFrame merged_df = pd.merge(df1, df2, on='Team', how='inner') # 计算Rank平均值,添加到结果中 merged_df['Rank_Avg'] = merged_df[['Rank_PF', 'Rank_PA']].mean(axis=1) # 调整列顺序(按需自定义) final_df = merged_df[['Team', 'Rank_Avg', '2022_PF', '2022_PA', 'L3_PF', 'L3_PA', 'Home_PF', 'Home_PA', 'Away_PF', 'Away_PA']] # 可选:将Rank_Avg转为整数(如果需要) final_df['Rank_Avg'] = final_df['Rank_Avg'].astype(int) print(final_df)
关于Rank均值计算异常的说明
你提到将Rank列转为float后解决了计算异常,通常这种情况是因为原始Rank列存在非数值类型数据(比如字符串格式的数字),或者在concat/groupby过程中因数据类型不一致导致聚合错误。转为float后统一了数据类型,确保均值计算正常执行。
输出结果示例
Team Rank_Avg 2022_PF 2022_PA L3_PF L3_PA Home_PF Home_PA Away_PF Away_PA 0 AR Lit Rock 209 73.8 80.7 71.3 78.7 78.2 75.3 71.4 83.7 1 Abl Christian 193 71.5 74.0 77.3 72.0 73.6 69.1 70.2 77.1 2 Air Force 58 67.2 67.0 69.0 75.3 70.1 65.0 62.2 70.3
内容的提问来源于stack exchange,提问作者Link
相关产品推荐
相关产品推荐

