Python pandas dataframe:为另一列的每个唯一值找到max
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python pandas dataframe:为另一列的每个唯一值找到max,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1342字,纯文字阅读大概需要2分钟。
内容图文
![Python pandas dataframe:为另一列的每个唯一值找到max](/upload/InfoBanner/zyjiaocheng/788/7469dc61759743a887c3b3deeae1b694.jpg)
我有一个大型数据帧(从500k到1M行),其中包含例如这3个数字列:ID,A,B
我想过滤结果,以获得如下图所示的表,其中,对于列id的每个唯一值,我有A和B的最大值和最小值.
我能怎么做?
编辑:我更新了下面的图像,以便更清楚:当我从列中获得最大值或最小值时,我还需要获取与其他列相关的数据
解决方法:
示例数据(请注意,您发布了一个图像,潜在的回答者无法使用该图像而无需重新输入,因此我在其中制作了一个简单的示例):
df=pd.DataFrame({ 'id':[1,1,1,1,2,2,2,2],
'a':range(8), 'b':range(8,0,-1) })
关键是只使用idxmax和idxmin,然后使用索引进行预测,以便以可读的方式合并内容.以下是整个答案,您可能希望检查中间数据帧以了解其工作原理.
df_max = df.groupby('id').idxmax()
df_max['type'] = 'max'
df_min = df.groupby('id').idxmin()
df_min['type'] = 'min'
df2 = df_max.append(df_min).set_index('type',append=True).stack().rename('index')
df3 = pd.concat([ df2.reset_index().drop('id',axis=1).set_index('index'),
df.loc[df2.values] ], axis=1 )
df3.set_index(['id','level_2','type']).sort_index()
a b
id level_2 type
1 a max 3 5
min 0 8
b max 0 8
min 3 5
2 a max 7 1
min 4 4
b max 4 4
min 7 1
特别注意df2看起来像这样:
id type
1 max a 3
b 0
2 max a 7
b 4
1 min a 0
b 3
2 min a 4
b 7
最后一列保存了df中的索引值,这些索引值是用idxmax& idxmin.所以基本上你需要的所有信息都在df2中.其余的只是与df合并并使其更具可读性的问题.
内容总结
以上是互联网集市为您收集整理的Python pandas dataframe:为另一列的每个唯一值找到max全部内容,希望文章能够帮你解决Python pandas dataframe:为另一列的每个唯一值找到max所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。