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

标签 python pandas

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

相关文章:

python - 根据总数的比例删除 pandas 数据框中的行

python - 如何查看 SWIG 接口(interface)、TensorFlow 背后的 C++ 函数调用

python - 两个列表中匹配元素的数量

python - 将 Python xmlrpclib 与 unix 域套接字一起使用?

Python检测高斯模糊

python - pandas dataframe 根据相应行的其他列更新列值

python - 根据 groupby() 条件删除 pandas 数据帧行

python - 如何在 Jupyter Notebook 中禁用单元格截断?

python - 在预测决策树中的值后如何创建索引数据框

python - 将数据框按列值分组,同时对另一列求和