如何在轴=2上将两个Pandas数据帧组合为一个数据帧(即,使单元格值为元组)



我有两个(大(数据帧。它们具有相同的索引&列,我想将它们组合起来,使它们在每个单元格中都有元组值。

这个例子最能说明这一点:

pd.DataFrame({
'A':[True, True, False],
'B':[False, True, False], 
})
df2 = pd.DataFrame({
'A':[1, 2, 3],
'B':[5, 6, 7], 
})
# Desired output:
pd.DataFrame({
'A':[(True, 1), (True, 2), (False, 3)],
'B':[(False, 5), (True, 6), (False, 7)], 
})

DataFrames很大(1m行以上(,因此希望能在一定程度上有效地做到这一点。

我尝试了np.stack([df1.values, df2.values], axis=2),得到了正确的值数组,但无法将其转换为数据帧。

有什么想法吗?

我用这个解决方案得到了您想要的输出

import pandas as pd
df1 = pd.DataFrame({
'A':[True, True, False],
'B':[False, True, False], 
})
df2 = pd.DataFrame({
'A':[1, 2, 3],
'B':[5, 6, 7], 
})
for df_1k, df_2k in zip(df1.columns, df2.columns):
df1[df_1k] = list(map(tuple, zip(df1[df_1k], df2[df_2k])))
print(df1)

相关内容

最新更新