我想在数据框中添加一列,并在另一个数据框中添加匹配计数。例如,
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中添加“计数”列,预期输出如下:
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
我可以知道执行此操作的pythonic方法吗?先感谢您。
您可以尝试merge
使用groupby
的df2
带size
。最后,您可以使用fillna
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句