如何计算两列中唯一字符串的数量?

tob*_*bip 1 python pandas

我有一个包含两列包含字符串的DataFrame,例如:

COL1 --- COL2
恩斯特---吉姆·
彼得·恩斯特---
比尔---为NaN
NaN的---道格·
吉姆---杰克

现在我想在第一列和第二列中创建一个包含唯一字符串列表的新DataFrame,其中包含2个原始列中每个字符串的出现次数,如:

海峡 --- OCCURENCES
恩斯特- 2
彼得·--- 1个
比尔--- 1
吉姆- 2
杰克--- 1
道格- 1

我该如何以最有效的方式做到这一点?谢谢!

Tom*_*ger 7

首先将原来的两列合并为一列:

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
Run Code Online (Sandbox Code Playgroud)

然后使用value_counts:

In [129]: s.value_counts()
Out[129]: 
Ernst    2
Jim      2
Bill     1
Doug     1
Jake     1
Peter    1
dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • 或者,`df.unstack().value_counts()`.(如果框架中的列数多于"col1"和"col2",则需要先选择这些列.) (3认同)
  • 哦,那太好了.`df.stack().value_counts()`给出相同的结果. (2认同)