【问题标题】:Two dataframes, count repeated ids and merge with another dataframe with the same id?两个数据框,计算重复的ID并与另一个具有相同ID的数据框合并?
【发布时间】:2021-09-02 02:01:59
【问题描述】:

我有两个不同的数据框,在第一个中我有唯一的 id,在第二个中我有与唯一的相同的 id,它们可能会出现多次,有些可能不会出现。

我想计算每个 id 在数据框 2 中重复的次数,然后与数据框 1 合并到相应的 id 中。

数据框 1:

id_unique  name
400        t1
450        t2
300        t10
600        t20
650        t30

数据框 2:

id    other_columns
400   s1    
400   s2
650   s3
600   s4
600   s5
600   s6

想要的结果:

id_unique  name  count_df2
400        t1    2
450        t2    0
300        t10   0
600        t20   3
650        t30   1

我该怎么做?

【问题讨论】:

    标签: python pandas dataframe group-by merge


    【解决方案1】:

    将Series.map 与Series.value_counts 一起使用,并将缺失值替换为0:

    df1['count_df2'] = df1['id_unique'].map(df2['id'].value_counts()).fillna(0).astype(int)
    

    【讨论】:

      【解决方案2】:

      我创建了一个基本示例:

      df1 = pd.DataFrame({'id': [1, 2, 3, 4, 5], 'name': [1, 1, 2, 2, 3]})
      df2 = pd.DataFrame({'id': [1, 1, 1, 2, 2], 'name': [1, 1, 2, 2, 3]})
      df1['df2_count'] = df1['id'].map(df2.groupby('id').size())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 2017-06-24
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多