Python 对另一数据帧中的一行数据帧进行计数

Python 对另一数据帧中的一行数据帧进行计数,python,pandas,Python,Pandas,我想向一个数据帧添加一列,其中包含另一个数据帧中的匹配计数。比如说, df1 = pd.DataFrame({'A':['yes','yes','yes','yes','yes','yes','no','no','no','no','no','no'], 'B':['L','L','M','M','H','H','L','L','M','M','H','H'], 'C':[True,False,True,False,

我想向一个数据帧添加一列,其中包含另一个数据帧中的匹配计数。比如说,

df1 = pd.DataFrame({'A':['yes','yes','yes','yes','yes','yes','no','no','no','no','no','no'],
                    'B':['L','L','M','M','H','H','L','L','M','M','H','H'],
                    'C':[True,False,True,False,True,False,True,False,True,False,True,False]})
对于df1中的每一行,我想知道它在df2中的计数

df2 = pd.DataFrame({'A':['yes','yes','no','yes','no','yes','yes','no','no','no'],
                   'B':['L','M','M','L','M','M','H','L','H','M'],
                   'C':[True,True,True,True,True,False,False,False,False,False]})
通过在df1中添加列“count”,预期输出如下:

index     A     B     C     count
0        yes    L   True        2
1        yes    L   False       0
2        yes    M   True        1
3        yes    M   False       1
4        yes    H   True        0
5        yes    H   False       1
6         no    L   True        0
7         no    L   False       1
8         no    M   True        2
9         no    M   False       1
10        no    H   True        0
11        no    H   False       1
我可以知道蟒蛇式的方法吗?提前感谢。

您可以尝试使用的
df2
with。最后您可以使用with列将
NaN
替换为
0

print df2.groupby(['A','B','C']).size().reset_index(name='count')
     A  B      C  count
0   no  H  False      1
1   no  L  False      1
2   no  M  False      1
3   no  M   True      2
4  yes  H  False      1
5  yes  L   True      2
6  yes  M  False      1
7  yes  M   True      1

print pd.merge(df1, 
               df2.groupby(['A','B','C']).size().reset_index(name='count'),
               on=['A','B','C'],
               how="left").fillna({'count': 0})

      A  B      C  count
0   yes  L   True      2
1   yes  L  False      0
2   yes  M   True      1
3   yes  M  False      1
4   yes  H   True      0
5   yes  H  False      1
6    no  L   True      0
7    no  L  False      1
8    no  M   True      2
9    no  M  False      1
10   no  H   True      0
11   no  H  False      1

我改进了答案,因为在所有
df
fillna(0)
replace
NaN
,并且只在列
count
中需要替换
NaN