如何合并不同形状、列名各异的两个DataFrame并新增指定列?
解决方案
你可以用 pandas 的数据拼接和列处理功能来实现,步骤如下:
步骤说明与代码示例
首先假设你的两个 DataFrame 分别叫 df1(3列,含Turtlemint profile_id)和 df2(仅含clientid列),先构造示例数据方便理解:
import pandas as pd # 示例第一个DataFrame df1 = pd.DataFrame({ "Turtlemint profile_id": ["tp_001", "tp_002", "tp_003"], "列A": ["值A1", "值A2", "值A3"], "列B": [10, 20, 30] }) # 示例第二个DataFrame df2 = pd.DataFrame({ "clientid": ["cl_001", "cl_002"] })
1. 给第一个DataFrame添加标记列
给 df1 新增一列(比如叫业务类型),所有值设为"Life":
df1["业务类型"] = "Life"
2. 统一列名并提取所需列
为了能纵向拼接,把两个DataFrame的ID列改成相同名称(比如都叫用户ID),同时提取需要保留的列:
# 处理df1:提取ID列和标记列,并重命名ID列 df1_processed = df1[["Turtlemint profile_id", "业务类型"]].rename(columns={"Turtlemint profile_id": "用户ID"}) # 处理df2:重命名clientid为统一的ID列名,标记列设为空值(按需调整) df2_processed = df2.rename(columns={"clientid": "用户ID"}) df2_processed["业务类型"] = pd.NA # 如果需要给第二个DF加其他标记,直接替换成对应值即可
3. 纵向拼接两个处理后的DataFrame
用pd.concat()把两个表堆叠起来,重置索引避免重复:
final_result = pd.concat([df1_processed, df2_processed], ignore_index=True)
最终的final_result就是你要的效果:原Turtlemint profile_id的行都带"Life"标记,clientid的行接在下方,标记为空(或你指定的其他值)。
内容的提问来源于stack exchange,提问作者beginner_Coder
相关产品推荐
相关产品推荐

