合并两个数据帧,同时每次更改第二个数据帧的顺序

Merging two dataframes while changing the order of the second dataframe each time

df 是这样的:

Week    Name  
 1      TOM
 1      BEN
 1      CARL
 2      TOM
 2      BEN
 2      CARL
 3      TOM
 3      BEN
 3      CARL

df1 是这样的:

ID     Letter
1        A
2        B
3        C

我想合并这两个数据框,以便每次为每个名称分配一个不同的字母。所以结果应该是这样的:

Week    Name    Letter
 1      TOM       A
 1      BEN       B
 1      CARL      C
 2      TOM       B
 2      BEN       C
 2      CARL      A
 3      TOM       C
 3      BEN       A
 3      CARL      B

如有任何帮助,我们将不胜感激。提前致谢。

df1['Letter'] = df1.groupby('Week').cumcount().add(df1['Week'].sub(1)).mod(df1.groupby('Week').transform('count')['Name']).map(df2['Letter'])

输出:

>>> df1
   Week  Name Letter
0     1   TOM      A
1     1   BEN      B
2     1  CARL      C
3     2   TOM      B
4     2   BEN      C
5     2  CARL      A
6     3   TOM      C
7     3   BEN      A
8     3  CARL      B