gpt4 book ai didi

pandas - 如何确保在 python pandas pd.cut 中获得零计数的标签

转载 作者:行者123 更新时间:2023-12-02 03:10:57 25 4
gpt4 key购买 nike

我正在分析一个 DataFrame 并获取我想要放入特定存储桶中的计时计数(0-10 秒、10-30 秒等)。

这是一个简化的示例:

import pandas as pd

filter_values = [0, 10, 20, 30] # Bucket Values for pd.cut

#Sample Times
df1 = pd.DataFrame([1, 3, 8, 20], columns = ['filtercol'])

#Use cut to get counts for each bucket
out = pd.cut(df1.filtercol, bins = filter_values)
counts = pd.value_counts(out)
print counts

以上打印:

(0, 10]     3
(10, 20] 1
dtype: int64

您会注意到它没有显示 (20, 30] 的任何值。这是一个问题,因为我想将其作为零放入输出中。我可以使用以下代码处理它:

bucket1=bucket2=bucket3=0
if '(0, 10]' in counts:
bucket1=counts['(0, 10]']
if '(10, 20]' in counts:
bucket2=counts['(10, 30]']
if '(20, 30]' in counts:
bucket3=counts['(30, 60]']
print bucket1, bucket2, bucket3

但我想要一种更简单、更干净的方法,我可以使用:

print counts['(0, 10]'], counts['(10, 30]'], counts['(30, 60]']

理想情况下,打印基于filter_values中的值,因此它们仅位于代码中的一个位置。是的,我知道我可以更改打印以使用 filter_values[0]...

最后,当使用 cut 时,有没有办法指定无穷大,以便最后一个存储桶中的所有值都大于 60?

干杯,斯蒂芬

最佳答案

您可以reindex按类别级别:

In [11]: pd.value_counts(out).reindex(out.levels, fill_value=0)
Out[11]:
(0, 10] 3
(10, 20] 1
(20, 30] 0
dtype: int64

关于pandas - 如何确保在 python pandas pd.cut 中获得零计数的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21295077/

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