【问题标题】:pandas: groupby + store in another dataframe熊猫:groupby +存储在另一个数据框中
【发布时间】:2021-04-22 17:01:25
【问题描述】:

上周我问了similar question,现在我遇到了类似的问题,但我无法转换在这种情况下收到的答案。

基本上,我有一个名为 comms 的数据框,如下所示:

articleID   Material    commentScore
 1234         News          0.75      
 1234         News          -0.1      
 5678         Sport         1.33      
 5678         News          0.75      
 5678        Fashion        0.02 
 7412       Politics        -3.45              

还有另一个名为arts的数据框,它看起来像这样:

articleID   wordCount      byLine
 1234         1524          John     
 5678         9824          Mary    
 7412         3713          Sam

我想简单地计算每个articleID 有多少个comms,并将这个数字存储在名为commentNumberarts 数据框的新列中。

我想我必须使用groupbycount() 或者merge,但我不知道为什么。

预期输出

articleID   wordCount      byLine    commentNumber
 1234         1524          John         2
 5678         9824          Mary         3
 7412         3713          Sam          1

提前致谢! 安德烈亚

【问题讨论】:

  • 您的预期/期望输出是什么?请提供包含已处理数据的示例数据框。
  • 你说得对,我忘了提供。现已编辑

标签: python-3.x pandas dataframe


【解决方案1】:

在一列上使用groupby(),然后使用count()。最后,将结果映射到artsarticleID 列。

arts['commentNumber'] = arts['articleID'].map(comms.groupby('articleID')['Material'].count())
print(arts)

   articleID  wordCount byLine  commentNumber
0       1234       1524   John              2
1       5678       9824   Mary              3
2       7412       3713    Sam              1

【讨论】:

    【解决方案2】:

    Series.mapSeries.value_counts 一起使用:

    arts['commentNumber'] = arts['articleID'].map(comms['articleID'].value_counts())
    print (arts)
       articleID  wordCount byLine  commentNumber
    0       1234       1524   John              2
    1       5678       9824   Mary              3
    2       7412       3713    Sam              1
    

    替代方案:

    from collections import Counter
    arts['commentNumber'] = arts['articleID'].map(Counter(comms['articleID']))
    

    【讨论】:

    • 这不是骗子?
    • @ShubhamSharma - 我认为不会,transform 不能在这里使用。但它真的很接近最后一个答案吗 - 仅适用于 2 个不同的 df。
    • @ShubhamSharma - 但也许能找到更好的骗子,让我知道,然后我可以关闭
    • 很公平,但我猜它几乎相似。
    猜你喜欢
    • 2018-03-20
    • 2016-10-09
    • 2013-12-19
    • 2021-04-30
    • 1970-01-01
    • 2021-12-06
    • 2022-09-29
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多