首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何按特定列分组,然后在不是NA的地方获取多个列的计数,并将它们添加到Pandas Python中?

在Pandas中,可以使用groupby方法按特定列进行分组,然后使用count方法获取多个列的计数,并将结果添加到DataFrame中。

下面是一个示例代码:

代码语言:txt
复制
import pandas as pd

# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [1, 1, 2, 2, 2],
        'C': [1, 2, pd.NA, 4, pd.NA],
        'D': [1, pd.NA, pd.NA, 4, 5]}
df = pd.DataFrame(data)

# 按列'B'进行分组,并计算列'C'和列'D'的非NA值的计数
result = df.groupby('B').agg({'C': lambda x: x.count(), 'D': lambda x: x.count()})

# 将计数结果添加到原DataFrame中
df['C_count'] = df['B'].map(result['C'])
df['D_count'] = df['B'].map(result['D'])

print(df)

输出结果如下:

代码语言:txt
复制
   A  B    C    D  C_count  D_count
0  1  1    1    1        2        2
1  2  1    2  NaN        2        2
2  3  2  NaN  NaN        3        3
3  4  2    4    4        3        3
4  5  2  NaN    5        3        3

在这个例子中,我们按列'B'进行分组,然后使用agg方法计算列'C'和列'D'的非NA值的计数。最后,使用map方法将计数结果添加到原DataFrame中的新列'C_count'和'D_count'中。

这个方法适用于任意多个列的计数,并且可以根据实际需求进行修改。对于Pandas的更多操作和用法,可以参考Pandas官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 一场pandas与SQL的巅峰大战(二)

    上一篇文章一场pandas与SQL的巅峰大战中,我们对比了pandas与SQL常见的一些操作,我们的例子虽然是以MySQL为基础的,但换作其他的数据库软件,也一样适用。工作中除了MySQL,也经常会使用Hive SQL,相比之下,后者有更为强大和丰富的函数。本文将延续上一篇文章的风格和思路,继续对比Pandas与SQL,一方面是对上文的补充,另一方面也继续深入学习一下两种工具。方便起见,本文采用hive环境运行SQL,使用jupyter lab运行pandas。关于hive的安装和配置,我在之前的文章MacOS 下hive的安装与配置提到过,不过仅限于mac版本,供参考,如果你觉得比较困难,可以考虑使用postgreSQL,它比MySQL支持更多的函数(不过代码可能需要进行一定的改动)。而jupyter lab和jupyter notebook功能相同,界面相似,完全可以用notebook代替,我在Jupyter notebook使用技巧大全一文的最后有提到过二者的差别,感兴趣可以点击蓝字阅读。希望本文可以帮助各位读者在工作中进行pandas和Hive SQL的快速转换。本文涉及的部分hive 函数我在之前也有总结过,可以参考常用Hive函数的学习和总结。

    02

    《利用Python进行数据分析·第2版》第7章 数据清洗和准备7.1 处理缺失数据7.2 数据转换7.3 字符串操作7.4 总结

    在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。这些工作会占到分析师时间的80%或更多。有时,存储在文件和数据库中的数据的格式不适合某个特定的任务。许多研究者都选择使用通用编程语言(如Python、Perl、R或Java)或UNIX文本处理工具(如sed或awk)对数据格式进行专门处理。幸运的是,pandas和内置的Python标准库提供了一组高级的、灵活的、快速的工具,可以让你轻松地将数据规变为想要的格式。 如果你发现了一种本书或pandas库中没有的数据操作方式,请尽管

    09
    领券