如果值存储为“;”,如何获取 pandas 中的值计数列中的分隔值?

How to get count of values in pandas if the values are stored as ";" delimited values in columns?

我正在尝试分析 2019 年 Whosebug 开发人员调查。其中,每行中的 LanguageWorkedWith 列值以分号分隔。
df["LanguageWorkedWith"] returns 这个系列对象。

Respondent
1                          HTML/CSS;Java;JavaScript;Python
2                                      C++;HTML/CSS;Python
3                                                 HTML/CSS
4                                      C;C++;C#;Python;SQL
5              C++;HTML/CSS;Java;JavaScript;Python;SQL;VBA
                               ...                        
88377                        HTML/CSS;JavaScript;Other(s):
88601                                                  NaN
88802                                                  NaN
88816                                                  NaN
88863    Bash/Shell/PowerShell;HTML/CSS;Java;JavaScript...
Name: LanguageWorkedWith, Length: 88883, dtype: object

我试过这段代码:

languages = df["LanguageWorkedWith"].str.split(";")
lan_counter = Counter(languages.apply(pd.Series).values.ravel())

但是这段代码 returns 有很多 NaN 值。如何以比这更好的方式获取值的计数?
谢谢!

试试 .str.get_dummies:

df.LanguageWorkedWith.str.get_dummies(';').sum()

另一种内存效率更高的方法是 str.split:

df.LanguageWorkedWith.str.split(';').explode().value_counts()

输出:

C             1
C#            1
C++           3
HTML/CSS      5
Java          2
JavaScript    3
Other(s):     1
Python        4
SQL           2
VBA           1
dtype: int64