如何在pandas中的多个列中进行groupby计数

lol*_*tes 2 python counter data-analysis dataframe pandas

我在Python pandas中有以下示例数据框:

+---+------+------+------+
|   | col1 | col2 | col3 |
+---+------+------+------+
| 0 |   a  |   d  |   b  |
+---+------+------+------+
| 1 |   a  |   c  |   b  |
+---+------+------+------+
| 2 |   c  |   b  |   c  |
+---+------+------+------+
| 3 |   b  |   b  |   c  |
+---+------+------+------+
| 4 |   a  |   a  |   d  |
+---+------+------+------+
Run Code Online (Sandbox Code Playgroud)

我想对第1-3列中的所有"a","b","c"和"d"值进行计数,以便最终得到如下数据框:

+---+--------+-------+
|   | letter | count |
+---+--------+-------+
| 0 |    a   |   4   |
+---+--------+-------+
| 1 |    b   |   5   |
+---+--------+-------+
| 2 |    c   |   4   |
+---+--------+-------+
| 3 |    d   |   2   |
+---+--------+-------+
Run Code Online (Sandbox Code Playgroud)

我可以做到这一点的一种方法是将列堆叠在一起,然后进行分组计数,但我觉得必须有更好的方法.有人可以帮我弄这个吗?

piR*_*red 5

您可以stack()将数据帧放入行中,然后执行以下操作value_counts:

df.stack().value_counts()

b    5
c    4
a    4
d    2
dtype: int64
Run Code Online (Sandbox Code Playgroud)