【问题标题】:Create table by grouping mean values by column and list of one-hot encoded columns (Python, pandas)通过按列和单热编码列列表(Python、pandas)对平均值进行分组来创建表
【发布时间】:2021-11-11 06:37:08
【问题描述】:

我正在处理推文,我想报告平均情绪得分按主题和按社区。

这是我的数据框的样子,其中每一行都是一个文档(推文):

tweet_text        sentiment  community_id   topic_1   topic_2   topic_3    ...    topic_k
"blah blah blah"      0.7      1233             1       0         0        ...       1
"blah blah blah"     -0.4      9845             0       1         1        ...       0
"blah blah blah"      0.1      1233             1       0         1        ...       0

我想在每个单元格中创建一个包含平均情绪值的数据框,如下所示:

community_id   topic 1   topic 2   topic 3   ...    topic k
 1233           0.1       -0.8       0.5     ...       0.9
 9845          -0.3        0.2       0.4     ...       0.1
 ...            ...        ...       ...     ...       ...

请问您有什么想法可以解决这个问题吗?谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    首先你想通过主题传播情绪,然后平均通过community_id:

    (df.filter(like='topic')
       .mul(df.sentiment, axis=0)
       .groupby(df.community_id)
       .mean()
    )
    

    【讨论】:

    • 谢谢。看起来它一次过滤一个主题。如何让它为所有主题生成这些列?将其放入 for 循环并附加每个附加主题列?
    • 不,不是。它执行名称包含topic 的所有列。您也可以将第一行(df.filter(...))替换为df[list_of_topics]
    • 谢谢!这是我使用的最终代码:topics_list = ['topic_1', 'topic_2, 'topic_3'] df[topics_list ].mul(df[sentiment], axis=0).groupby(df[community)d]).mean()
    猜你喜欢
    • 2019-01-12
    • 2015-09-19
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多