簡體   English   中英

在另一個數據幀中計算一行熊貓數據幀

[英]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 groupbysize 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM