gpt4 book ai didi

python - 如何获取数据帧指定列中每个项目的值计数并仍然维护索引?

转载 作者:行者123 更新时间:2023-12-01 03:07:06 27 4
gpt4 key购买 nike

我正在尝试创建某些分组对象的直方图。因此,为了提供一些上下文,我有一个主数据框 df,我根据一些值对其进行查询并将其分配给 df_q。现在,我使用 df_q 创建一个索引来标识该组。我现在想做的是获取特定列的每个项目的值计数。所以如果我有:

In [128]: df_q
Out[128]:
annual_base_delta_range_ten annual_base_delta_range_three
row_id
10010 3 5
10010 5 11
10010 6 15
10010 5 11
10010 5 11
10010 5 12
10010 6 14
10010 6 16
10010 4 9
10010 4 9

我知道我可以在每个系列上做这样的事情:

In [129]: df_q.annual_base_delta_range_ten.value_counts()
Out[129]:
5 4
6 3
4 2
3 1
Name: annual_base_delta_range_ten, dtype: int64

但我想要一个看起来像 df_q 的数据框(即,相同的 row_id 索引和相同的列名称,并添加两个新的值计数列)。

编辑

这是我想要的结果:

delta_ten  |  delta_10_count |  delta_three  |  delta_three_count
3 1 5 1
4 2 9 2
5 4 11 3

等等...并且 row_id 也相同。

最佳答案

您可以使用源列作为合并键,将原始数据框与每个 value_counts 系列合并(即联接)。

col = 'annual_base_delta_range_ten'
df.merge(df[col].value_counts().to_frame('{}_value_counts'.format(col)),
left_on='annual_base_delta_range_ten', right_index=True)
        annual_base_delta_range_ten  annual_base_delta_range_three  annual_base_delta_range_ten_value_counts
row_id
10010 3 5 1
10010 5 11 4
10010 5 11 4
10010 5 11 4
10010 5 12 4
10010 6 15 3
10010 6 14 3
10010 6 16 3
10010 4 9 2
10010 4 9 2

关于python - 如何获取数据帧指定列中每个项目的值计数并仍然维护索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43267280/

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