gpt4 book ai didi

python - 计算 dask.dataframe 中某些值的出现次数

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:23 26 4
gpt4 key购买 nike

我有一个这样的数据框:

df.head()
day time resource_record
0 27 00:00:00 AAAA
1 27 00:00:00 A
2 27 00:00:00 AAAA
3 27 00:00:01 A
4 27 00:00:02 A

并想找出某些 resource_records 存在的次数。

我的第一次尝试是使用 value_counts() 返回的 Series,这看起来不错,但之后不允许我排除一些标签,因为没有 drop()dask.Series 中实现。

所以我尽量不打印不需要的标签:

for row in df.resource_record.value_counts().iteritems():
if row[0] in ['AAAA']:
continue
print('\t{0}\t{1}'.format(row[1], row[0]))

这很好用,但如果我想进一步处理这些数据并且真的希望它“清理”怎么办。所以我进一步搜索了文档并找到了 mask(),但这也感觉有点笨拙:

records = df.resource_record.mask(df.resource_record.map(lambda x: x in ['AAAA'])).value_counts()

我在寻找一种方法,它可以让我只计算单个值,但是 count() 确实计算了所有不是 NaN 的值。

然后我找到了 str.contains(),但我不知道如何处理我通过这段代码返回的未记录的标量类型:

print(df.resource_record.str.contains('A').sum())

输出:

dd.Scalar<series-..., dtype=int64>

但即使查看了 dask/dataframe/core.py 中 Scalar 的代码,我也没有找到获取其值的方法。

您如何有效地计算数据框中特定值集的出现次数?

最佳答案

在大多数情况下,pandas 语法与 dask 一样适用,需要添加 .compute()(或 dask.compute)来实际执行操作。在计算之前,您只是在构建定义操作的图形。

我相信对您的问题最简单的解决方案是:

df[df.resource_record!='AAAA'].resource_record.value_counts().compute()

选择器方括号中的表达式可以是某个映射或函数。

关于python - 计算 dask.dataframe 中某些值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com