如何按单元格合并两个同尺寸的Pandas DataFrame?
同尺寸DataFrame单元格合并实现方案
pd.merge()、pd.join()和pd.concat()都是用于行/列维度的拼接操作,无法实现单元格内部的多值合并,你可以用以下几种方式实现需求:
方法1:列表推导式+Zip遍历
直接遍历两个DataFrame的每一行和每个元素,将对应位置的整数和浮点数组成元组,再重构为新DataFrame:
import pandas as pd # 示例数据 df_int = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) df_float = pd.DataFrame([[0.1, 0.2], [0.3, 0.4]], columns=['A', 'B']) # 合并单元格 df_combined = pd.DataFrame( [[(i_val, f_val) for i_val, f_val in zip(i_row, f_row)] for i_row, f_row in zip(df_int.values, df_float.values)], index=df_int.index, columns=df_int.columns )
运行后每个单元格会存储(整数, 浮点数)形式的元组。
方法2:Applymap批量处理
通过applymap给每个单元格单独包装成元组,再利用元组的加法合并:
# 先将每个单元格转为单元素元组 df_int_tuple = df_int.applymap(lambda x: (x,)) df_float_tuple = df_float.applymap(lambda x: (x,)) # 元组相加得到双元素元组 df_combined = df_int_tuple + df_float_tuple
这种写法更简洁,适合大尺寸DataFrame的批量处理。
方法3:扁平化后重组
先将两个DataFrame的所有元素扁平化,Zip配对后再重塑为原形状:
# 扁平化并配对元素 paired_vals = list(zip(df_int.values.flatten(), df_float.values.flatten())) # 按原DataFrame的行列数重塑 df_combined = pd.DataFrame( [paired_vals[i:i+df_int.shape[1]] for i in range(0, len(paired_vals), df_int.shape[1])], index=df_int.index, columns=df_int.columns )
内容的提问来源于stack exchange,提问作者apcuevw
相关产品推荐
相关产品推荐

