我有一个类似于:
的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 等等。我该怎样做呢?
答案 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