我有以下pandas DataFrame:
XEP0363 fileUpload = new XEP0363(connection);
fileUpload.requestSlot("upload.myxmppdomain", "mypic.jpg", 12345, listener)
我希望通过电子邮件和class_price进行分组,对于每行我想要占用class_price的最大值。
我正在使用:
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
输出结果为:
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
注意:示例输出与刚刚编写的示例输入不兼容,以解释这个想法。
答案 0 :(得分:2)
您可以重置索引,将数据放入列中。
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
答案 1 :(得分:2)
您可以像其他答案一样尝试 reset_index
,也可以尝试以下 -
test_df2 = test_df.groupby(['email','cat'], as_index=False)['class_price'].max()