簡體   English   中英

如何使用熊貓創建一個新列的最大值(對應於特定名稱)?

[英]How do I create a new column of max values of a column(corresponding to specific name) using pandas?

我想知道是否可以使用 Pandas 為列的最大值創建一個新列(對應於不同的名稱,以便每個名稱都有一個最大值)。

例如:

name    value    max
Alice    1        9
Linda    1        1
Ben      3        5
Alice    4        9
Alice    9        9
Ben      5        5
Linda    1        1

所以對於 Alice,我們選擇 1、4 和 9 中的最大值,即 9。對於 Linda max(1,1) = 1,對於 Ben max(3,5) = 5。

我正在考慮使用.loc選擇name == "Alice" ,然后獲取這些行的最大值,然后創建新列。 但由於我正在處理一個大型數據集,這似乎不是一個好的選擇。 有沒有更聰明的方法來做到這一點,這樣我就不需要知道具體的名字了?

groupby 並取一個 max 按名稱給出最大值,然后將其與原始 df 合並

df.merge(df.groupby(['name'])['value'].max().reset_index(), 
         on='name').rename(
                    columns={'value_x' : 'value', 
                             'value_y' : 'max'})
    name    value   max
0   Alice   1   9
1   Alice   4   9
2   Alice   9   9
3   Linda   1   1
4   Linda   1   1
5   Ben     3   5
6   Ben     5   5

您可以使用transformmap

df['max'] = df.groupby('name')['value'].transform('max')

或者

df['max'] = df['name'].map(df.groupby('name')['value'].max())

暫無
暫無

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

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