【发布时间】:2021-11-28 06:11:15
【问题描述】:
假设我有一个 DataFrame:
| David | Maxime | |
|---|---|---|
| 0 | cat | duck |
| 1 | dog | cat |
| 2 | horse | duck |
| 3 | cat | dog |
如何得到以下结果?
| Animals | Total |
|---|---|
| cat | 3 |
| duck | 2 |
| dog | 2 |
| horse | 1 |
我发现了很多代码,但不是针对根据唯一列中数据出现次数返回结果的情况。
【问题讨论】:
假设我有一个 DataFrame:
| David | Maxime | |
|---|---|---|
| 0 | cat | duck |
| 1 | dog | cat |
| 2 | horse | duck |
| 3 | cat | dog |
如何得到以下结果?
| Animals | Total |
|---|---|
| cat | 3 |
| duck | 2 |
| dog | 2 |
| horse | 1 |
我发现了很多代码,但不是针对根据唯一列中数据出现次数返回结果的情况。
【问题讨论】:
你可以使用
pd.concat([df.David.value_counts(), df.Maxine.value_counts()], axis=1).fillna(0).sum(axis=1)
这将创建一个数据框,其中包含沿每列计数的值,然后对行求和。
【讨论】:
一种选择是融化数据框,并使用 value_counts:
(df.melt(value_name = 'Animal')
.value_counts(subset='Animal')
.reset_index(name='Total')
)
Animal Total
0 cat 3
1 dog 2
2 duck 2
3 horse 1
【讨论】: