假设我有一个dataframe
,如下所示:
Index | one | two | three |
---|---|---|---|
First | A | B | C |
Second | C | A | B |
Third | B | A | C |
我想要的结果是在所有的列上数到df.iloc[:,1:]:
.
Item | one | two | three |
---|---|---|---|
A | 1 | 2 | 0 |
B | 1 | 1 | 1 |
C | 1 | 0 | 2 |
第二个表的说明放在每个计数旁边的括号中.
Item | one | two | three |
---|---|---|---|
A | 1 (Only one A in column 1) | 2 (two counts of A in column 2) | 0 (No A in column 3) |
B | 1(Only one B in column 1) | 1 (Only one B in column 2) | 1 (1 B in column 3) |
C | 1 (Only one C in column 1) | 0 (No Cs in column 2) | 2 (two counts of C in column 3) |
我try 了以下方法,但效果不是很好:
-
df3.iloc[:,1:].value_counts().to_frame('counts').reset_index()
个 -
df[df.columns[1:]].value_counts()
个
以上两个一行程序很接近,但并不完全是这样.
我能想到的一种MacGyvered解决方案是逐一循环列,对每一列进行.value_counts()
次循环,并try 组织计数,但考虑到每.value_count
的顺序略有不同,这会有点混乱.
我该怎么做呢?