簡體   English   中英

計算所有列中數據幀的多個值

[英]Count multiple values of a dataframe across all columns

如何計算整個數據框中多個值的出現次數? 有沒有辦法在沒有 for 循環的情況下實現?

Ex = 計算數據框所有列中的所有 0 和 -1

我在想像 df.apply.count(0,-1)

謝謝!

簡單地使用帶有value_counts melt

df.melt().value.value_counts()

要么

np.unique(a.values.ravel(),return_counts=True)
Out[292]: (array([1, 2, 3, 5], dtype=int64), array([3, 1, 1, 1], dtype=int64))

設定

np.random.seed([3, 1415])

df = pd.DataFrame(
    np.random.choice(range(-2, 3), size=(10, 10)),
    columns=[*'abcdefghij']
)

df

   a  b  c  d  e  f  g  h  i  j
0 -2  1  0  1  0  0  1  0  1 -2
1  0 -2 -2  2 -2  0  0 -2  2 -1
2  1  0  2  2  2  2  1  1  1  2
3  1 -1  1 -2  2  2  0  0 -2  0
4  2 -2  2 -1  2  2  0  0 -2  0
5  2  1 -1  2  0  2  0  1  2  1
6 -2  1  1 -1 -2 -2  2  1 -2  2
7 -1  1  2  0  2 -2 -2  0 -2  2
8  2  1 -2  1 -1 -1  2  1  2  1
9 -1  1  2 -2  1  0 -2 -2  1 -1

numpy.in1d

這應該很快

np.in1d(df.values, [0, -1]).sum()

29

S

np.in1d(df.values, [0, -1]).sum()相似的性能

np.isin(df.values.ravel(),[0,-1]).sum()

29

numpy.in1dnp.count_nonzero

這應該很快

np.count_nonzero(np.in1d(df.values, [0, -1]))

29

applymap + set.__contain__ + numpy.sum

這有點厚臉皮

df.applymap({0, -1}.__contains__).values.sum()

29

您可以嘗試以下方法:

(df == 0).sum(axis=1).sum()

這將計算幀的所有列中零的數目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM