如何合并两个Pandas分组聚合列并添加除法计算列
Pandas合并DataFrame并新增均值列的解决方案
步骤1:合并两个DataFrame
df_weight和df_TotalShow共享Genre列,直接用pd.merge()按该列合并,就能把两表的total_weight和total_shows整合到同一DataFrame中:
import pandas as pd # 合并操作(默认内连接,可通过how参数指定外连接/左连接等逻辑) df_merged = pd.merge(df_weight, df_TotalShow, on='Genre')
步骤2:新增Avg列
合并完成后,直接在新DataFrame中通过列运算生成Avg列——这种方式能保证索引完全对齐,避免单独用div得到孤立Series的问题:
# 计算均值列 df_merged['Avg'] = df_merged['total_weight'] / df_merged['total_shows'] # 若需处理除数为0的场景,用div方法并设置填充值 # df_merged['Avg'] = df_merged['total_weight'].div(df_merged['total_shows'], fill_value=0)
完整示例
假设你的数据结构如下,运行代码后即可得到包含Genre、total_weight、total_shows、Avg的完整DataFrame:
# 模拟你的数据结构 df_weight = pd.DataFrame({ 'Genre': ['Action', 'Comedy', 'Drama'], 'total_weight': [250, 180, 320] }) df_TotalShow = pd.DataFrame({ 'Genre': ['Action', 'Comedy', 'Drama'], 'total_shows': [10, 9, 16] }) # 合并+计算均值 df_merged = pd.merge(df_weight, df_TotalShow, on='Genre') df_merged['Avg'] = df_merged['total_weight'] / df_merged['total_shows'] print(df_merged)
输出结果:
Genre total_weight total_shows Avg 0 Action 250 10 25.0 1 Comedy 180 9 20.0 2 Drama 320 16 20.0
内容的提问来源于stack exchange,提问作者Aloysius
相关产品推荐
相关产品推荐

