【问题标题】:Create category rows from count of list items in pandas column根据 pandas 列中的列表项计数创建类别行
【发布时间】:2020-03-04 22:20:34
【问题描述】:

我在 pandas 数据框中有一组职位空缺数据,我用它包含的字符串“标记”了它。例如,如果标题或描述中提到了 C#,则 C# 将添加到 languages 列下的该行。

我现在想总结一下整个数据框中每个技能的计数。原始数据框:

    languages                   frameworks     platforms    databases       other
0   [SQL, C]                    []             [AWS]        []              []
1   [SQL]                       []             []           [SQL Server]    []
2   [SQL, C#]                   [ASP.NET, ASP] []           [SQL Server]    []
3   [JavaScript, HTML, CSS,]    []             []           []              []
4   [JavaScript, Python, Java]  [React]        []           []              []
...

期望:

    skill_category   skill        count
0   languages        SQL          3
1   languages        C            1
2   languages        C#           1
3   languages        JavaScript   2
...
9   frameworks       ASP.NET      1
10  frameworks       ASP          1
...
12  platforms        AWS          1
...
14  databases        SQL Server   2
...
15  other            Hadoop       1
etc.

我试过了:

  • 将 df 的相关部分输出到 python 字典列表中,并使用 for 循环和计数器来计算每个类别中的技能。然后我可以从中创建一个新的数据框,但这是很多我觉得熊猫应该可以实现的代码。

  • 查看了 pandas 的 .pivot() 方法,但我无法找到让列名(languagesframeworks 等)成为每个技能的行的方法。

  • 使用pandas的@​​987654329@和.value_counts()方法统计每列技能,例如:

In[12]:   df['languages'].explode().value_counts()
Out[12]:    
JavaScript     39
SQL            32
C#             28
HTML           24
Java           24
...

但这只适用于逐列。我需要一个带有类别行的数据框,用于在 plotly 中创建faceted visualisations

请帮忙?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你已经接近答案了!但是在计数之前将所有列堆叠成一个高系列:

    counts = df.stack().explode()\
               .reset_index().groupby(["level_1", 0]).count()
    counts = counts.reset_index()
    counts.columns = "skill_category", "skill", "count"
    

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 1970-01-01
      • 2019-02-04
      • 2018-12-21
      • 2020-04-24
      • 2020-07-21
      • 2020-09-11
      • 1970-01-01
      • 2021-01-02
      相关资源
      最近更新 更多