使用 Pandas 根据数据框中的另一列值获取特定值的计数和总数

用户001

我有以下数据框df

名字 地位
约翰 完全的
詹姆士 去做
吉尔 去做
罗伯特 进行中
吉尔 去做
吉尔 去做
码头 完全的
艾薇 完全的
艾薇 完全的

现在我想要每个用户的每种状态的计数。对于所有类型的状态,我都可以得到这样的结果。

df = pd.crosstab(df.names,df.status).reset_index("names")

所以现在结果df

地位 名字 完全的 进行中 去做
0 詹姆士 0 0 1
1 罗伯特 0 1 0
2 约翰 1 0 0
3 码头 1 0 0
4 吉尔 0 0 3
5 艾薇 2 0 0

所以我的问题是如何仅指定要计算的特定类型的状态值?例如:我只想要In ProgressandCompleted和 not的值To Do以及如何向上面称为 as 的额外列添加一个额外的列Total Statuses,这实际上是原始数据框中每个名称的总行数?

所需的数据帧:

地位 名字 完全的 进行中 全部的
0 詹姆士 0 0 1
1 罗伯特 0 1 1
2 约翰 1 0 1
3 码头 1 0 1
4 吉尔 0 0 3
5 艾薇 2 0 2
阿努拉格·达巴斯

其它的办法:

传入marginsmargins_name参数pd.crosstab()

df=(pd.crosstab(df.names,df.status,margins=True,margins_name='Total').iloc[:-1]
      .reset_index().drop('To Do',1))

或者

通过crosstab()+assign()

df=(pd.crosstab(df.names,df.status).assign(Total=lambda x:x.sum(1))
      .reset_index().drop('To Do',1))

或者

分两步:

df=pd.crosstab(df.names,df.status)
df=df.assign(Total=df.sum(1)).drop('To Do',1).reset_index()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Pandas 根据另一列的值从相邻列中获取立即值

如何使用 pandas 更改特定列的数据并根据另一列中的特定值将它们相乘?

使用另一列的偏移值比较Pandas数据框列中的值

根据另一列的值替换 Pandas 数据框中的特定值

在pandas数据框列中使用整数以从另一列内的列表中提取特定值

在Pandas数据框中使用groupby时,如何根据上一行中的值增加一列?

如何使用对另一列的值进行测试来填充pandas数据框列?

使用 map() 时出错:根据另一列中的值创建新的 Pandas 列

根据另一列中的一些多个过滤器值匹配列中的子字符串并使用 Pandas 聚合计数

使用Pandas根据另一列的值创建一列

使用Pandas根据另一列的值选择一列

根据另一列中的值对pandas数据框中的列进行归一化

使用一列中的重复值删除pandas数据框中的整行

如何使用两行中的值在 Pandas 数据框中创建一列?

根据列表或另一列中的值在Pandas数据框中动态选择列

Python Pandas:使用三个不同的值在数据框中创建一列

使用pandas / numpy数据框以另一列的条目(特征值)为条件来操纵特定的列(示例特征)

遍历一列并根据 PANDAS 数据框中另一列的值将值添加到列表

如何使用python中另一列的值填充pandas數據框中的空值?

根据另一列的值将列添加到pandas数据框中

根据另一列中的条件在 Pandas 数据框中设置值

Pandas数据框:根据另一列中的值操纵列(无需遍历行)

Pandas数据框:根据另一列中的值替换多行

如何在Pandas数据框中的另一列中添加对特定值进行计数的计数器列?

根据另一列中的字符串值在 pandas 数据框中修改一列

尝试使用Python / pandas根据来自另一个数据框的一列的内部和创建一个新的数据框

根据 Pandas 中的另一列,使用 n 生成新列 w 值 1 到 n

使用先前计算的值(来自同一列)和来自 Pandas Dataframe 中另一列的值计算值

如何使用 python 在 Pandas 中拆分數據框列值以獲取另一列?