我有以下 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/