如何合并两个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
相关产品推荐
相关产品推荐

