如何合并两个DataFrame并对同名称对应数值求和生成新列
实现方案
因为两个DataFrame均以体裁名称为索引,直接对齐索引对应值相加即可,示例代码如下:
import pandas as pd # 还原你给出的示例数据(如果已经有df1、df2可跳过这部分) df1 = pd.DataFrame( {'genres1': [1168, 517, 431, 353, 335, 328, 20]}, index=['Drama', 'Adventure', 'Documentary', 'Animation', 'Crime', 'Romance', 'Sci-Fi'] ) df2 = pd.DataFrame( {'genres2': [1625, 1233, 1200, 688, 562, 390, 336]}, index=['Comedy', 'Action', 'Drama', 'Documentary', 'Crime', 'Adventure', 'Animation'] ) # 核心逻辑:对齐索引相加,缺失值填充为0,转换为列名为Genre的DataFrame result = df1['genres1'].add(df2['genres2'], fill_value=0).to_frame(name='Genre') # 如果你需要和你给出的预期输出一致,仅保留df1中出现过的体裁,加上以下行 result = result.reindex(df1.index) # 如果需要按数值从高到低排序,加上以下行 result = result.sort_values(by='Genre', ascending=False)
代码说明
add方法会自动对齐两个Series的索引,同索引的值相加,仅在单侧出现的体裁用fill_value=0填充,不会出现空值- 去掉
reindex行即可保留两个表中所有出现过的体裁(包含df2独有的Comedy、Action)
内容的提问来源于stack exchange,提问作者Yanzi
相关产品推荐
相关产品推荐

