[英]Counting a row of pandas data frame in another data frame
我想在數據框中添加一列,並在另一個數據框中添加匹配計數。 例如,
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
df2
groupby
與size
merge
。 最后,您可以使用fillna
with column將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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.