sta*_*kit 7 python dataframe pandas
我有以下熊猫DataFrame:
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
Run Code Online (Sandbox Code Playgroud)
我想通过电子邮件和class_price进行分组,对于每一行,我都希望采用class_price的最大值。
我正在使用:
test_df2 = test_df.groupby(['email','cat'])['class_price'].max()
Run Code Online (Sandbox Code Playgroud)
输出为:
email cat
email1@gmail.com cat1 2
cat2 4
email2@gmail.com cat2 2
cat3 1
email3@gmail.com cat1 3
cat2 4
Run Code Online (Sandbox Code Playgroud)
但是我怎么能得到一个结果,即使是分组的列也保留重复的值,以便可以将所有值写成一个正确的表:
email cat maxvalue
email1@gmail.com cat2 2
email1@gmail.com cat1 2
email3@gmail.com cat3 3
Run Code Online (Sandbox Code Playgroud)
注意:示例输出与仅用于解释该思想的示例输入不兼容。
您可以重置索引,将数据放入列中。
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
Run Code Online (Sandbox Code Playgroud)
您可以尝试reset_index其他答案,也可以尝试下面 -
test_df2 = test_df.groupby(['email','cat'], as_index=False)['class_price'].max()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4124 次 |
| 最近记录: |