我有一个包含两列包含字符串的 DataFrame,例如:
col1 --- col2
Ernst --- Jim
Peter --- Ernst
Bill --- NaN
NaN --- Doug
Jim --- Jake
现在我想创建一个新的 DataFrame,在第一列中包含唯一字符串的列表,在第二列中包含每个字符串在 2 个原始列中出现的次数,例如:
str --- occurences
Ernst --- 2
Peter --- 1
Bill --- 1
Jim --- 2
Jake --- 1
Doug --- 1
我如何以最有效的方式做到这一点?谢谢!
请您参考如下方法:
首先将您原来的两列合并为一列:
In [127]: s = pd.concat([df.col1, df.col2], ignore_index=True)
In [128]: s
Out[128]:
0 Ernst
1 Peter
2 Bill
3 NaN
4 Jim
5 Jim
6 Ernst
7 NaN
8 Doug
9 Jake
dtype: object
然后使用value_counts:
In [129]: s.value_counts()
Out[129]:
Ernst 2
Jim 2
Bill 1
Doug 1
Jake 1
Peter 1
dtype: int64
