You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并DataFrame时如何按city纵向堆叠而非横向扩展列

实现方法

你需要先筛选出两个DataFrame共有的城市,再对筛选后的结果做纵向拼接即可,完整代码如下:

import pandas as pd

# 步骤1:提取两个表共有的city集合
common_cities = df_1['city'].intersection(df_2['city'])

# 步骤2:分别筛选两个表中属于共有城市的行
df1_part = df_1[df_1['city'].isin(common_cities)]
df2_part = df_2[df_2['city'].isin(common_cities)]

# 步骤3:纵向拼接并按城市排序
joined_df = pd.concat([df1_part, df2_part], ignore_index=True).sort_values(by=['city', 'state'], ignore_index=True)

# 可选:如果需要把NaN替换为空字符串,执行下面这行
joined_df = joined_df.fillna('')

逻辑说明

你之前用merge得到的是横向拼接的宽表,不符合纵向堆叠的需求。上述方法先过滤出两边都存在的城市(等价于内连接的匹配逻辑),再通过concat纵向堆叠,自动会为缺失的列填充空值,排序后就和你预期的输出完全一致。

内容的提问来源于stack exchange,提问作者Jake Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:33:03