【问题标题】:groupby and sum the values based on non-duplicated value in another columngroupby 并根据另一列中的非重复值对值求和
【发布时间】:2020-12-17 16:26:20
【问题描述】:

我正在使用 jupyter notebook 和 pandas。 我有一个这样的数据框:

article_id   user_id  Repetition
123           1234       1
123           1234       1
12            1234       0
15            1234       0
567           4899       1
567           4899       1
567           4899       1
909           4899       1
909           4899       1
202           4899       0

我想通过 'user_id' 总结 'Repetition' 列组中的值,但是,每个 'user_id' 只会总结唯一 'id' 列的值。 (相同'user_id'的输出值将相同)

所以期望的输出是:

article_id   user_id  Repetition   value
123           1234       1          1
123           1234       1          1
12            1234       0          1
15            1234       0          1
567           4899       1          2
567           4899       1          2
567           4899       1          2
909           4899       1          2
909           4899       1          2
202           4899       0          2

这个输出值的含义是:某个用户有多少篇文章被标记为“重复”。

对此有什么想法吗?提前致谢!

【问题讨论】:

  • df['value'] = df.groupby('user_id').ngroup() + 1 ?

标签: python dataframe group-by jupyter-notebook duplicates


【解决方案1】:

用途:

m = df.groupby(['user_id','article_id']).max().sum(level=0)['Repetition']
df['value'] = df['user_id'].map(m)
df

输出:

   article_id  user_id  Repetition  value
0         123     1234           1      1
1         123     1234           1      1
2          12     1234           0      1
3          15     1234           0      1
4         567     4899           1      2
5         567     4899           1      2
6         567     4899           1      2
7         909     4899           1      2
8         909     4899           1      2
9         202     4899           0      2

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 2014-09-27
    • 2011-01-19
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多