This question already has answers here:
Pandas Merging 101
(5个答案)
2年前关闭。
我有两个数据框
现在,我需要从df1的A列和B列以及从df2的A列和CC列获得相似的行。
因此,我尝试了可能的合并选项,例如:
这不会给我来自df2数据帧的行信息,这是我所需要的。意思是,我拥有df2中的所有列名,但行只是空或Nan。
然后我尝试了:
这给了我错误,
我的目标是将df1和df2中的所有列都合并到Dataframe中。任何建议都很好
所需的输出:
因此,在我的数据帧(df1和df2)中,只有一行与目标两列都完全匹配。也就是说,df1中的A和B列只有一行与df2中A和CC列中的行完全匹配
结果是:
编辑
您只需要:
这使:
(5个答案)
2年前关闭。
我有两个数据框
df1 = pd.DataFrame({'A': ['A1', 'A1', 'A2', 'A3'],
'B': ['121', '345', '123', '146'],
'C': ['K0', 'K1', 'K0', 'K1']})
df2 = pd.DataFrame({'A': ['A1', 'A3'],
'BB': ['B0', 'B3'],
'CC': ['121', '345'],
'DD': ['D0', 'D1']})
现在,我需要从df1的A列和B列以及从df2的A列和CC列获得相似的行。
因此,我尝试了可能的合并选项,例如:
both_DFS=pd.merge(df1,df2, how='left',left_on=['A','B'],right_on=['A','CC'])
这不会给我来自df2数据帧的行信息,这是我所需要的。意思是,我拥有df2中的所有列名,但行只是空或Nan。
然后我尝试了:
Both_DFs=pd.merge(df1,df2, how='left',left_on=['A','B'],right_on=['A','CC'])[['A','B','CC']]
这给了我错误,
KeyError: "['B'] not in index"
我的目标是将df1和df2中的所有列都合并到Dataframe中。任何建议都很好
所需的输出:
Both_DFs
A B C BB CC DD
0 A1 121 K0 B0 121 D0
因此,在我的数据帧(df1和df2)中,只有一行与目标两列都完全匹配。也就是说,df1中的A和B列只有一行与df2中A和CC列中的行完全匹配
最佳答案
好吧,如果您将A
列声明为索引,它将起作用:
Both_DFs = pd.merge(df1.set_index('A', drop=True),df2.set_index('A', drop=True), how='left',left_on=['B'],right_on=['CC'], left_index=True, right_index=True).dropna().reset_index()
结果是:
A B C BB CC DD
0 A1 123 K0 B0 121 D0
1 A1 345 K1 B0 121 D0
2 A3 146 K1 B3 345 D1
编辑
您只需要:
Both_DFs = pd.merge(df1,df2, how='left',left_on=['A','B'],right_on=['A','CC']).dropna()
这使:
A B C BB CC DD
0 A1 121 K0 B0 121 D0
关于python - 在不同的列名称上合并两个不同的数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43735132/
10-14 23:51