【发布时间】:2020-01-31 13:33:35
【问题描述】:
我有一个数据框,其中每一行都有一个作者(新闻频道)、文章的标题以及该文章的 cmets 数。
基本上,我想计算每篇文章的 cmets 数。我目前有以下代码,但我想考虑它。
# CSV of news articles, with authors, articles, and comments
df = pd.read_csv('articles.csv')
# Counts per author
art_count = df['AUTHOR'].value_counts()
# Calculate # of comments per article
def comment_sum(df, channel, channel_name, target):
# ex) sum(df[df['AUTHOR'] == 'NYTIMES']['COMMENTS'])
return sum(df[df[channel] == channel_name][target])
# Calculate # of comments
com_count = []
for newspaper in art_count.index:
com_count.append(comment_sum(df,'AUTHOR',newspaper,'COMMENTS'))
我觉得我可以通过使用 map 和 lambda 函数来简化我的代码,而无需声明方法,但我不确定如何去做。
【问题讨论】:
-
你听说过python中的groupby吗? stackoverflow.com/questions/30679467/… 看看这个!
-
df.groupby(['AUTHOR','article'])['COMMENTS'].sum()? ('article'是文章的栏目) -
如果你们中的任何一个作为答案发帖,我可以选择答案。
标签: python python-3.x pandas dictionary lambda