将pandas dataframe列中的单词分组为另一列以获取频率/计数

时间:2017-03-21 23:22:24

标签: python pandas numpy nltk

我有一个类似于:

的pandas数据框
    location       skills
0   Washington     excel
1   Chicago     
2   West Lebanon   r excel
3   Midland     
4   Washington     sql java
5   Cincinnati     sql java scala python.
6   Dover          sas sql r spss
7   Dover          sas c++ spss

当然还有很多行。我想知道'技能中每一个独特字符串的频率。每个位置的列。

例如, for location Dover ,我希望 sas的频率为2,spss:2,r:1,excel:0,java:0 等等。我该怎样做呢?

1 个答案:

答案 0 :(得分:2)

使用str.cat组合列。然后拆分并使用pd.value_counts

pd.value_counts(df.skills.str.cat(sep=' ').split())

sql        3
excel      2
java       2
spss       2
sas        2
r          2
scala      1
python.    1
c++        1
dtype: int64

通过location

获取此信息
f = lambda x: pd.value_counts(x.str.cat(sep=' ').split())
df.groupby('location').skills.apply(f).unstack(fill_value=0)

              c++  excel  java  python.  r  sas  scala  spss  sql
location                                                         
Cincinnati      0      0     1        1  0    0      1     0    1
Dover           1      0     0        0  1    2      0     2    1
Washington      0      1     1        0  0    0      0     0    1
West Lebanon    0      1     0        0  1    0      0     0    0