gpt4 book ai didi

Python Pandas 数据框 : find max for each unique values of an another column

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:09 24 4
gpt4 key购买 nike

我有一个大数据框(从 500k 到 1M 行),其中包含例如这 3 个数字列:ID、A、B

我想过滤结果以获得如下图所示的表格,其中,对于列 id 的每个唯一值,我有 A 和 B 的最大值和最小值。我该怎么办?

编辑:为了更清楚,我更新了下图:当我从一列中获取最大值或最小值时,我还需要获取其他列的相关数据

enter image description here

最佳答案

示例数据(请注意,您发布了一张图片,如果不重新输入,潜在的回答者将无法使用该图片,因此我将在此处制作一个简单的示例):

df=pd.DataFrame({ 'id':[1,1,1,1,2,2,2,2],
'a':range(8), 'b':range(8,0,-1) })

关键是使用 idxmaxidxmin,然后对索引进行 futzing,以便您可以以可读的方式合并内容。这是完整的答案,您可能希望检查中间数据帧以了解其工作原理。

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 中的索引值,这些索引值是使用 idxmaxidxmin 派生的。所以基本上您需要的所有信息都在 df2 中。其余部分只是与 df 合并并使其更具可读性的问题。

关于Python Pandas 数据框 : find max for each unique values of an another column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com