[英]How do I create a new column in pandas using calculated values and assign specific values to each row?
[英]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
您可以使用transform
或map
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.