Pandas-如何合并/连接/连接两个数据帧,使其具有值的元组配对



假设我将其作为intput--

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'] , 'id' : ['1', '2', '3', '4']})

df_1.head()
grade   score
0   A       9
1   A       9
2   B       8
3   C       6

然后通过编程我想实现这个——

pair_1  pair_2
0   (1, A)  (1, 9)
1   (2, A)  (2, 9)
2   (3, B)  (3, 8)
3   (4, C)  (4, 6)

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

***编辑***

我最初的措辞有误导性。对此深表歉意。CCD_ 1意味着具有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)
zip是一个选项:
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_df

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

最新更新