python - "group by" Pandas 数据框中的重复值

标签 python pandas dataframe

我有以下 Pandas 数据框:

     email   cat  class_price
0   email1@gmail.com  cat1            1
1   email2@gmail.com  cat2            2
2   email3@gmail.com  cat2            4
3   email1@gmail.com  cat2            4
4   email2@gmail.com  cat2            1
5   email3@gmail.com  cat1            3
6   email1@gmail.com  cat1            2
7   email2@gmail.com  cat2            1
8   email3@gmail.com  cat2            4
9   email1@gmail.com  cat2            2
10  email2@gmail.com  cat3            1
11  email3@gmail.com  cat1            1

我想按电子邮件和 class_price 分组,对于每一行我都想采用 class_price 的最大值。

我正在使用:

test_df2 = test_df.groupby(['email','cat'])['class_price'].max()

输出是:

email             cat 
email1@gmail.com  cat1    2
                  cat2    4
email2@gmail.com  cat2    2
                  cat3    1
email3@gmail.com  cat1    3
                  cat2    4

但是我怎样才能得到一个结果,即使是分组的列也保留重复的值,这样它就可以写成一个包含所有值的合适的表:

email             cat      maxvalue 
email1@gmail.com    cat2     2
email1@gmail.com    cat1     2
email3@gmail.com    cat3     3

注意:示例输出与刚刚为解释该想法而编写的示例输入不兼容。

最佳答案

您可以只重置索引,将数据放入列中。

In [1]: print (test_df2.reset_index(name='maxvalue').to_string(index=False))
           email   cat     maxvalue
email1@gmail.com  cat1            2
email1@gmail.com  cat2            4
email2@gmail.com  cat2            2
email2@gmail.com  cat3            1
email3@gmail.com  cat1            3
email3@gmail.com  cat2            4

关于python - "group by" Pandas 数据框中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36676800/

相关文章:

python - 如何有效地将一个 Pandas Dataframe 的每一列与另一个 Dataframe 的每一列相乘?

python - Pandas 数据帧 : Get value pairs from subsets of dataframe

python - 使用整数映射 Pandas Dataframe 中的字符串值

python - Django,在模板中显示上传的图像URL

python - 替换 Pandas 列中的值

python - 如何使用 python 打开文件夹中的多个 csv 文件,取列的平均值并保存在单独的文件中?

python - 来自 Pandas 数据框的共现矩阵

python - pandas 操纵数据框形状

python - 如何在 Pandas 中保持最快的骑行

python - 如何将长 WhatsApp 消息作为单条消息而不是多条消息发送