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

如何合并两个Pandas DataFrame为中位数(IQR)格式?

解决Pandas合并中位数与四分位距DataFrame的问题

首先明确原始数据定义:

import pandas as pd

medians = pd.DataFrame({"Median A" : [16, 14, 11], "Median B" : [9, 8, 5]})
iqrs = pd.DataFrame({"IQR A" : [5, 3, 4], "IQR B" : [2, 2, 4]})

方法一:手动对应列拼接(适合少量列)

直接针对每一组对应的中位数和四分位距列,将数值转为字符串后按「中位数(IQR)」格式拼接:

result = pd.DataFrame()
result["Value A"] = medians["Median A"].astype(str) + " (" + iqrs["IQR A"].astype(str) + ")"
result["Value B"] = medians["Median B"].astype(str) + " (" + iqrs["IQR B"].astype(str) + ")"

# 输出结果
print(result)

运行后会得到预期输出:

Value A     Value B
0    16 (5)      9 (2)
1    14 (3)      8 (2)
2    11 (4)      5 (4)

方法二:循环批量处理(适合多列场景)

如果后续有更多分组(如C、D等),可以通过列名规律自动提取分组,循环生成目标列:

result = pd.DataFrame()
# 从medians的列名中提取分组标识(A、B)
groups = [col.split()[-1] for col in medians.columns]

for group in groups:
    median_col = f"Median {group}"
    iqr_col = f"IQR {group}"
    result[f"Value {group}"] = medians[median_col].astype(str) + f" ({iqrs[iqr_col].astype(str)})"

print(result)

说明

你之前尝试的join()方法是用于按索引合并两个DataFrame的行/列,并非单元格内的字符串拼接操作。这里需要的是列元素级别的字符串拼接,所以要针对对应列的每个元素进行格式组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:37:36