Python 在多个公共值上合并数据帧
我正在尝试基于公共值合并两个数据帧。问题是存在重复的值。我正在尝试根据第一次出现合并这些值。我想合并Python 在多个公共值上合并数据帧,python,pandas,merge,Python,Pandas,Merge,我正在尝试基于公共值合并两个数据帧。问题是存在重复的值。我正在尝试根据第一次出现合并这些值。我想合并列B和列C中的值 import pandas as pd df = pd.DataFrame({ 'A' : ['10:00:05','11:00:05','12:00:05','13:00:05','14:00:05'], 'B' : ['ABC','DEF','XYZ','ABC','DEF'], 'C' : [1,1,1,1,
列B
和列C
中的值
import pandas as pd
df = pd.DataFrame({
'A' : ['10:00:05','11:00:05','12:00:05','13:00:05','14:00:05'],
'B' : ['ABC','DEF','XYZ','ABC','DEF'],
'C' : [1,1,1,1,2],
})
df1 = pd.DataFrame({
'A' : ['10:00:00','11:00:00','12:00:00','13:00:00','14:00:00'],
'B' : ['ABC','DEF','XYZ','ABC','DEF'],
'C' : [1,1,1,2,2],
})
如果我尝试:
df2 = pd.merge(df, df1, on = ["B", "C"])
输出:
A_x B C A_y
0 10:00:05 ABC 1 10:00:00
1 13:00:05 ABC 1 10:00:00
2 11:00:05 DEF 1 11:00:00
3 12:00:05 XYZ 1 12:00:00
4 14:00:05 DEF 2 14:00:00
鉴于我的预期产出是:
A B C D
0 10:00:05 ABC 1 10:00:00
1 11:00:05 DEF 1 11:00:00
2 12:00:05 XYZ 1 12:00:00
3 13:00:05 ABC 1
4 14:00:05 DEF 2 14:00:00
您可以使用
merge
然后使用duplicated
+loc
更新合并列:
merge_cols = ['B', 'C']
df2 = pd.merge(df, df1, on=merge_cols)
df2.loc[df2[merge_cols].duplicated(), 'A_y'] = ''
print(df2)
A_x B C A_y
0 10:00:05 ABC 1 10:00:00
1 13:00:05 ABC 1
2 11:00:05 DEF 1 11:00:00
3 12:00:05 XYZ 1 12:00:00
4 14:00:05 DEF 2 14:00:00
@Rushabh Mehta,这不是那个问题吗?你能再看看吗。你的旗子挡住了我的问题是的,我的旗子打错了问题。然而,这绝对是一个重复的问题。@RushabhMehta,你能附上一个正确的问题吗?现在正在研究,我有点好奇为什么你对我的失败感到相当慌乱