簡體   English   中英

如何使 dataframe 按列的最大值過濾 dataframe?

[英]How can I make a dataframe filtering the dataframe by the max value of a column?

我有這個 dataframe ,它按 object 的名稱分組,我想制作一個新的 dataframe 由column1的最大值過濾但保持對應的列的值。

                               Date    Column1  Column2 Column3
    NAME             Id             
 Object1            1548    2011-04-01  16926.0 1233.0  0.0
                    1548    2017-08-01  2340.0  224.0   21.0
                    1548    2017-07-01  2463.0  230.0   26.0
 Object2            1549    2017-06-01  2451.0  247.0   27.0
                    1549    2017-04-01  2347.0  240.0   21.0

這是我想要的結果的一個例子:

                               Date    Column1  Column2 Column3
    NAME             Id             
 Object1            1548    2011-04-01  16926.0 1233.0  0.0
 Object2            1549    2017-06-01  2451.0  247.0   27.0

使用groupby

df.groupby(['NAME']).apply(lambda x: x.sort_values(['Column1'], ascending=False).head(1))
Object1 0   Object1 1548    2011-04-01  16926.0 1233.0  0.0
Object2 3   Object2 1549    2017-06-01  2451.0  247.0   27.0

我假設您的 dataframe 為 df

首先重置索引。 df = df.reset_index()

您可以使用 max() 來獲取 column1 的最大值。

df1 = df.groupby(["NAME"])['Column1'].max() #returns max values of column1 of 2 names

然后您可以將所有系列放在一個列表中

a=[]
for n in list(df1):
  a.append(df[df['Column1'] == n].iloc[0,])

df2= pd.DataFrame(a)
display(df2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM