gpt4 book ai didi

python - pandas groupby 你得到一列的最大值和另一列的最小值

转载 作者:太空狗 更新时间:2023-10-29 21:33:31 32 4
gpt4 key购买 nike

我有一个数据框如下:

user    num1    num2
a 1 1
a 2 2
a 3 3
b 4 4
b 5 5

我想要一个数据框,每个用户的最小值是 num1,最大值是 num2。

输出应该是这样的:

user    num1    num2
a 1 3
b 4 5

我知道如果我想要两列的最大值,我可以这样做:

a.groupby('user')['num1', 'num2'].max()

是否有一些等效的东西而不必做类似的事情:

series_1 = a.groupby('user')['num1'].min() 
series_2 = a.groupby('user')['num2'].max()

# converting from series to df so I can do a join on user
df_1 = pd.DataFrame(np.array([series_1]).transpose(), index=series_1.index, columns=['num1'])
df_2 = pd.DataFrame(np.array([series_2]).transpose(), index=series_2.index, columns=['num2'])

df_1.join(df_2)

最佳答案

使用groupby + agg通过 dict,因此需要通过 subsetreindex_axis 对列进行排序.最后添加reset_index必要时将 index 转换为 column

df = a.groupby('user').agg({'num1':'min', 'num2':'max'})[['num1','num2']].reset_index()
print (df)
user num1 num2
0 a 1 3
1 b 4 5

什么是相同的:

df = a.groupby('user').agg({'num1':'min', 'num2':'max'})
.reindex_axis(['num1','num2'], axis=1)
.reset_index()
print (df)
user num1 num2
0 a 1 3
1 b 4 5

关于python - pandas groupby 你得到一列的最大值和另一列的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44383136/

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