【问题标题】:Using Lambda functions with two different dataframes将 Lambda 函数与两个不同的数据帧一起使用
【发布时间】:2020-11-17 18:22:47
【问题描述】:

我正在尝试使用 lambda 函数来计算数据帧 B 中数据帧 A 值的出现次数。

例如: df_a:

col_a
a
b
c
d
h

df_b:

col_b
d
d
f
q
a
a
a
p
m
c

我想解决这个问题的方法是这样的:

df_a["count"] = df_b.apply(lambda x: len(x[x.col_b == <item_in_df_a>]))

但是我在这方面并没有取得太大的成功。如何使用 lambda 函数实现计数? 我不太确定上面的lambda 表达式是否正确。

【问题讨论】:

    标签: python-3.x dataframe lambda


    【解决方案1】:

    试试这个,使用 isin 创建匹配元素的掩码,然后使用 groupby.size 计算出现次数。

    >>> mask = df_b['col_b'].isin(df_a['col_a'])
    >>> df_b[mask].groupby('col_b').size().reset_index(name='count')
    
      col_b  count
    0     a      3
    1     c      1
    2     d      2
    

    【讨论】:

      【解决方案2】:

      你也可以加入:

      df_a.set_index('col_a').join(pd.DataFrame(df_b.groupby('col_b').size())).fillna(0)
      
      
             0
      col_a   
      a     3.0
      b     0.0
      c     1.0
      d     2.0
      h     0.0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-08
        • 1970-01-01
        • 2018-01-26
        • 2021-08-21
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 2019-11-15
        相关资源
        最近更新 更多