python - 我如何在不重复计算的情况下计算 python 中数据框的所有唯一值?

标签 python pandas dataframe

假设我有一个看起来像这样的 python 数据框:

Factor_1    Factor_2    Factor_3   Factor_4   Factor_5
   A           B           A          Nan       Nan
   B           D           F          A         Nan
   F           A           D          B          A

像这样,我有 5 列具有不同的因素。我想创建一个列来计算 dtaframe 中出现的这些因素的数量,但如果一行中的值 apperas 它只将其计为 1,例如如果一行有 A、B , C, A, A只算1个A。预期的输出将是这样的。

Factor   Count
  A        3
  B        3
  D        2
  F        2
 Nan       2

我使用了我得到帮助的代码

df.stack(dropna=False).value_counts(dropna=False)

我正在使用 if 来删除重复计数,但我想知道是否有一种实用且简单的方法来执行此操作,如上面的代码,而不是使用 If,因为我正在做的事情效率不高。

最佳答案

您可以使用Series.unique + Series.value_counts:

s = pd.Series(np.hstack(df.T.apply(pd.Series.unique))).value_counts(dropna=False)

B      3
A      3
F      2
D      2
NaN    2
dtype: int64

关于python - 我如何在不重复计算的情况下计算 python 中数据框的所有唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63886534/

相关文章:

python - Pandas 使用 .resample() 返回关联属性

python - 为什么赋值时的行为不一致?

python - YAML 列表 -> Python 生成器?

python - 如何选择结合了列表和范围的数据框列

Python DataFrame - 根据同一数据帧的列中的值选择数据帧行

python - 在 Python Pandas 中创建一个新列并按每个组将值分配给第一行

python - Python中字符串的持久散列

python - 对单元格内的字符串序列进行排序

python - pandas 数据框中过滤列表时出错

python - 选择 pandas df 中的字符串列(相当于 df.select_dtypes)