【发布时间】: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()方法,但我无法找到让列名(languages、frameworks等)成为每个技能的行的方法。使用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。
请帮忙?
【问题讨论】: