zip是一个选项:
假设我将其作为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)
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)