Pandas-如何合并/连接/合并两个数据帧以拥有值的元组对

Pandas-如何合并/连接/合并两个数据帧以拥有值的元组对,pandas,dataframe,pandas-groupby,Pandas,Dataframe,Pandas Groupby,假设我把这个作为输入-- 将熊猫作为pd导入 df_1=pd.DataFrame({'grade':['A','A','B','C'],'score':[9,9,8,6]}) df_2=pd.DataFrame({'id':['1','2','3','4','id':['1','2','3','4']}) df_1.头() 成绩 0 A 9 1 A 9 2 B 8 3 C 6 然后我想通过编程实现这一点-- 我意识到这个用例有点奇怪,但我还是想弄清楚 ***编辑*** 我最初的措辞有误导性。对

假设我把这个作为输入--

将熊猫作为pd导入
df_1=pd.DataFrame({'grade':['A','A','B','C'],'score':[9,9,8,6]})
df_2=pd.DataFrame({'id':['1','2','3','4','id':['1','2','3','4']})
df_1.头()
成绩
0 A 9
1 A 9
2 B 8
3 C 6
然后我想通过编程实现这一点--

我意识到这个用例有点奇怪,但我还是想弄清楚

***编辑***

我最初的措辞有误导性。对此表示歉意
df_2
意味着有两个唯一的列。根据与@Henry Ecker的讨论

df_1 = pd.DataFrame({'grade' : ['A', 'A', 'B', 'C'], 'score' : [9, 9, 8, 6]})
df_2 = pd.DataFrame({'id' : ['1', '2', '3', '4'] , 'key' : ['5', '6', '7', '8']})

   grade   score
0  (1, A)  (5, 9)
1  (2, A)  (6, 9)
2  (3, B)  (7, 8)
3  (4, C)  (8, 6)
是一种选择:

import pandas as pd

df_1 = pd.DataFrame({'grade': ['A', 'A', 'B', 'C'], 'score': [9, 9, 8, 6]})
df_2 = pd.DataFrame({'id': ['1', '2', '3', '4'], 'key': ['5', '6', '7', '8']})

# Zip Columns Together
for df_1k, df_2k in zip(df_1.columns, df_2.columns):
    # Map each group of columns into tuples
    df_1[df_1k] = list(map(tuple, zip(df_2[df_2k], df_1[df_1k])))

print(df_1)
df_1

    grade   score
0  (1, A)  (5, 9)
1  (2, A)  (6, 9)
2  (3, B)  (7, 8)
3  (4, C)  (8, 6)

直接进入新的数据帧:

import pandas as pd

df_1 = pd.DataFrame({'grade': ['A', 'A', 'B', 'C'], 'score': [9, 9, 8, 6]})
df_2 = pd.DataFrame({'id': ['1', '2', '3', '4'], 'key': ['5', '6', '7', '8']})

new_df = pd.DataFrame({
    df_1k: list(map(tuple, zip(df_2[df_2k], df_1[df_1k])))
    for df_1k, df_2k in zip(df_1.columns, df_2.columns)
})
print(new_df)
new\u df

    grade   score
0  (1, A)  (5, 9)
1  (2, A)  (6, 9)
2  (3, B)  (7, 8)
3  (4, C)  (8, 6)

嗨,亨利,我的伪代码是个很糟糕的例子。我的意思是每个数据帧都有唯一的列。因此,在下面的示例中,仅压缩df_2['id']是不起作用的。我还将用相同的信息更新问题``dfu 1=pd.DataFrame({'grade':['A','A','B','C','score':[9,9,8,6]})dfu 2=pd.DataFrame({'id':['1','2','3','4','key':['5','6','7','8']})成绩0(1,A)(5,9)1(2,A)(6,9)2(3,8)(8,6)```
    grade   score
0  (1, A)  (5, 9)
1  (2, A)  (6, 9)
2  (3, B)  (7, 8)
3  (4, C)  (8, 6)