假设我有一个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的顺序略有不同,这会有点混乱.

我该怎么做呢?

推荐答案

试试这个:

df = df.apply(pd.value_counts).fillna(0)

-希望这会有帮助.

Python-3.x相关问答推荐

海象表达可以放在方括号中而不是括号中吗?

根据样本量随机 Select 组内样本

字符串块数组:如何根据一个数组中的元素对另一个数组中的元素进行分组

小部件padx和包方法ipadx有什么不同?

为什么我的Selenium脚本在密码元素上失败?

我无法直接在 VSCode 中运行该程序,但可以使用 VScode 中的终端运行它

三重奏:为什么频道被记录为使用async with,而不是with?

在不改变 python 中原始数组顺序的情况下,对多维字符串数组进行降序排序?

如何转置和 Pandas DataFrame 并命名新列?

仅当从 USB 摄像头接收到新图像时才处理图像

如何将元组列表拆分为两个单独的列表?

从 h264 帧解析数据包时 PyAV 不一致

对齐文本文件中的列

错误:预期语句,发现 py:Dedent

如何配置 Atom 以运行 Python3 脚本?

AttributeError:系列对象没有属性iterrows

在不关心项目的情况下运行生成器功能的更简单方法

Python 3中星型导入的函数形式是什么

如何删除目录? os.removedirs 和 os.rmdir 是否只用于删除空目录?

如何使用 Celery 和 Django 将任务路由到不同的队列