我正在尝试创建某些分组对象的直方图。因此,为了提供一些上下文,我有一个主数据框 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/