熊猫如何添加计数器以匹配两个数据框列之间的行

时间:2018-11-23 12:51:46

标签: python pandas python-2.7 numpy dataframe

我有两个数据框,我想在其中添加另一个计数器列,以匹配这些数据框行之间的行。

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

我想在此处匹配val1val2列,并在 df3 中添加计数器,以查找这些数据帧 df1 和< em> df2 。

任何帮助将不胜感激。

2 个答案:

答案 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