从另一个 DataFrame 中查找并计算一个 DataFrame 的元素数量

Find and count the number of elements of one DataFrame from another DataFrame

我有 2 个输入数据帧。

  1. 数据帧一:
a1 a2
A C
B D
F D
A D
  1. 数据帧二:
emi_1 emi_2
A C
B L
C N
G D

我想要的输出: 我想计算 df1 中 df2 中每个元素的出现次数: 预期输出显示在这张图片中:

注意:如果您根据 IMEI 对最终数据帧进行分组,这将是 reader 友好的,因此该特定的所有值都将被分组。

这里有一个方法,一步一步来

>>> df1

  a1 a2
0  A  C
1  B  D
2  F  D
3  A  D

>>> df2

  emi_1 emi_2
0     A     C
1     B     L
2     C     N
3     G     D

>>> df2_melted = df2.melt(var_name="IMEI", value_name="Values")
>>> df2_melted

    IMEI Values
0  emi_1      A
1  emi_1      B
2  emi_1      C
3  emi_1      G
4  emi_2      C
5  emi_2      L
6  emi_2      N
7  emi_2      D

>>> df1_counts = df1.apply(pd.Series.value_counts)
>>> df1_counts

    a1   a2
A  2.0  NaN
B  1.0  NaN
C  NaN  1.0
D  NaN  3.0
F  1.0  NaN

>>> final = (
         df2_melted.merge(df1_counts, how="left", 
                          left_on="Values", right_index=True)
                   .fillna(0)
                   .astype({"a1":int, "a2":int})
    )

>>> final

    IMEI Values  a1  a2
0  emi_1      A   2   0
1  emi_1      B   1   0
2  emi_1      C   0   1
3  emi_1      G   0   0
4  emi_2      C   0   1
5  emi_2      L   0   0
6  emi_2      N   0   0
7  emi_2      D   0   3