我有两个数据框,我想在其中添加另一个计数器列,以匹配这些数据框行之间的行。
df1:
Id val1 val2 val3
0 ab ba sx
1 bc dc xy
2. ab ba ux
df2:
Id val1 val2 val3
0 ab ba zx
1 bc dc vy
预期结果: df3:
Id val1 val2 val3 counter
0 ab ba sx 1
1 bc dc xy 1
2. ab ba ux 2
我想在此处匹配val1
和val2
列,并在 df3 中添加计数器,以查找这些数据帧 df1 和< em> df2 。
任何帮助将不胜感激。
答案 0 :(得分:0)
不清楚要输出什么,但这可能会帮助您:
dfa = df1.groupby(['val1', 'val2'], as_index = false).size().rename(columns{0,'counter'}
答案 1 :(得分:0)
首先通过内部合并找到匹配的行,然后使用groupby
+ cumcount
添加一个计数器:
res = df1.merge(df2.drop(['Id', 'val3'], 1), on=['val1', 'val2'], how='inner')\
.sort_values('Id').reset_index(drop=True)
res['Counter'] = res.groupby(['val1', 'val2']).cumcount() + 1
print(res)
Id val1 val2 val3 Counter
0 0 ab ba sx 1
1 1 bc dc xy 1
2 2 ab ba ux 2