统计同一数据帧中多个不同出现的总数

  • 本文关键字:数据帧 统计 python pandas
  • 更新时间 :
  • 英文 :


假设我们有数据帧df

c1  c2  c3  c4  c5  c6
0   'A' 'B' NaN NaN NaN NaN
1   'C' 'D' NaN NaN NaN NaN
2   'A' 'A' 'B' NaN NaN NaN
3   'A' 'B' 'C' NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN

我知道要计算'B'的数量,我必须使用(df == 'B').sum().sum()。现在假设我想要计算数据帧中包含的列表v = ['B', 'C']中的元素个数。有什么方法可以做到这一点呢?

显然(df == 'B').sum().sum() + (df == 'C').sum().sum()是可以的,但我需要更一般的。

(df.isin(v)).sum().sum()works fine.

只需stack数据帧,它将创建一个系列,然后您可以使用isin,最后调用sum()

>>> df.stack().isin(['B', 'C']).sum()
5

同样,在数据框上直接使用isin也可以很好地调用sum两次:

>>> df.isin(['B', 'C']).sum().sum()
5

试试stack+value_counts

out = df.stack().value_counts()
Out[99]: 
'A'    4
'B'    3
'C'    2
'D'    1
dtype: int64

然后

out[v].sum()

最新更新