分组合并DataFrame后缺失'Amzius'列,如何修复?
问题修复方案
问题原因
当你用groupby('Amzius')计算均值时,'Amzius'会自动成为结果Series的索引,而非普通数据列。后续用pd.concat合并后,这个索引依然保持索引身份,不会出现在columns列表中,所以你看不到它。
修复方法
有两种简单的解决方式:
方法1:分组时保留'Amzius'为列
在groupby中添加as_index=False参数,让分组键保持为普通列,而非索引。之后用merge合并(比concat更适合关联键匹配场景):
df_grouped = df.groupby('Amzius', as_index=False)['Atlygis'].mean() df_grouped1 = df.groupby('Amzius', as_index=False)['Kaina'].mean() # 按'Amzius'列合并两个DataFrame df_joined = pd.merge(df_grouped, df_grouped1, on='Amzius') print(df_joined) print(df_joined.columns.values) # 此时会看到'Amzius'、'Atlygis'、'Kaina'三列
方法2:将现有结果的索引转为列
如果你已经得到了df_joined,可以直接调用reset_index()把索引转成普通列:
df_grouped = df.groupby('Amzius')['Atlygis'].mean() df_grouped1 = df.groupby('Amzius')['Kaina'].mean() df_joined = pd.concat([df_grouped, df_grouped1], axis=1, join='inner') # 将索引'Amzius'转为普通列 df_joined = df_joined.reset_index() print(df_joined) print(df_joined.columns.values) # 此时'Amzius'会出现在列列表中
内容的提问来源于stack exchange,提问作者litpost
相关产品推荐
相关产品推荐

