首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找dataframe列之间的共现元素数。

查找dataframe列之间的共现元素数。
EN

Stack Overflow用户
提问于 2022-10-21 17:46:27
回答 1查看 39关注 0票数 1

我有一个DataFrame,有一个网站,类别,并为该网站关键字。

代码语言:javascript
运行
复制
Url  | categories                                | keywords
Espn | [sport, nba, nfl]                         | [half, touchdown, referee,  player, goal]
Tmz  | [entertainment, sport]                    | [gossip, celebrity, player]
Goal [ [sport, premier_league, champions_league] | [football, goal, stadium, player, referee]

可以使用以下代码创建:

代码语言:javascript
运行
复制
data = [{ 'Url': 'ESPN', 'categories': ['sport', 'nba', 'nfl'] ,
         'keywords': ["half", "touchdown", "referee",  "player", "goal"] },
         { 'Url': 'TMZ', 'categories': ["entertainment", "sport"] ,
           'keywords': ["gossip", "celebrity", "player"] },
         { 'Url': 'Goal', 'categories': ["sport", "premier_league", "champions_league"] ,
           'keywords': ["football", "goal", "stadium", "player", "referee"]},
       ]

df =pd.DataFrame(data)

对于关键字列中的所有单词,我希望获得与其相关的类别的频率。结果可能如下所示:

{体育: 1,nba: 1,nfl: 1},触地: 1,nba: 1,nfl: 1},裁判:{体育: 2,nba: 1,nfl: 1,premier_league: 1,champions_league:1 },球员:{体育运动: 3,nba: 1,nfl: 1,premier_league: 1,champions_league:1 },绯闻:{体育:1,娱乐:1},名人:{体育:1,娱乐:1,目标:{体育:2,premier_league:1,champions_league:1,nba: 1,nfl: 1},体育场:{体育运动:1,premier_league:1,champions_league:1 }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 18:11:54

由于列包含列表,因此可以对每个列表的每个元素重复一次行:

代码语言:javascript
运行
复制
result = (
    df.explode("keywords")
    .explode("categories")
    .groupby(["keywords", "categories"])
    .size()
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74157446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档