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)
replaceNaN
,并且只在列count
中需要替换NaN