我想為每個組分配一個號碼。我試著做
df['group_n'] = df.groupby('ID').ngroup()
但它給了我一個錯誤訊息:
SettingWithCopyWarning:試圖在 DataFrame 中的切片副本上設定值。嘗試使用 .loc[row_indexer,col_indexer] = value 查看檔案中的注意事項:https ://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a -復制
如果我這樣做,df['group_n'] = df.groupby('ID').ngroup().add(1)
我按降序獲得_n(意思是C:3,B:2,A:1)有沒有辦法保留該順序但group_n從0開始?
我目前的表:
ID date sender
C Jan20 3
C Feb20 7
C Mar20 12
C Apr20 15
B Mar20 1
B May20 10
B Jun20 15
...
A Jan21 10
A Feb21 12
A Mar21 20
A Apr21 5
所需表:
ID date sender group_n
C Jan20 3 1
C Feb20 7 1
C Mar20 12 1
C Apr20 15 1
B Mar20 1 2
B May20 10 2
B Jun20 15 2
A Jan21 10 3
A Feb21 12 3
A Mar21 20 3
A Apr21 5 3
先感謝您!
uj5u.com熱心網友回復:
利用:
df['group_n'] = pd.factorize(df['ID'])[0] 1
或者:
df['group_n'] = df.gruopby('ID', sort=False).ngroup().add(1)
print(df)
ID date sender group_n
A Jan20 3 1
A Feb20 7 1
A Mar20 12 1
A Apr20 15 1
B Mar20 1 2
B May20 10 2
B Jun20 15 2
C Jan21 10 3
C Feb21 12 3
C Mar21 20 3
C Apr21 5 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420046.html
標籤:
