我想在数据框中添加一列,其中包含另一个数据框中的匹配计数。例如,
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]})
添加一个列' count'在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方法吗?提前谢谢。
答案 0 :(得分:3)
您可merge
groupby
df2
size
fillna
。最后,您可以使用https://www.dropbox.com/s/rbmsanfv9pyj2vv/Screenshot%202016-02-26%2015.50.15.png?dl=0列来将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