我有這樣的資料框
df = pd.DataFrame({
'col1' : ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
'col2' : ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'],
'col3' : [1,1,2,3,4,3,2,2,4]
})
這給了我分組的結果和計數
df.groupby(["col1", "col3"]).size()
這給了我最大值的第一個結果
df.groupby(["col1", "col3"]).size().idxmax()
但是,我想要所有最大的出現。我在 Stackoverflow 上找到的一切都是,當已經有一個列時,即計數。然后在計數列中有多個最大值。但是這里不同。我按兩個值分組,然后我想要這個分組結果的最大值/最小值。如何在熊貓中做到這一點?
這里我期待
(M1, 2)
(M2, 4)
(M4, 4)
編輯:
df.groupby(["col1", "col3"]).size()
給我
col1 col3 <- lets name this column count
MM1 1 2
2 1
MM2 3 2
4 1
MM4 2 2
4 1
讓我們命名未命名的列count。
我如何獲得s中的所有最大值
count column?因此,這:2, 2, 2我如何從
col1和獲取其相應的值col2?像這樣(列名只是為了清楚起見):
col1, col3, count
MM1, 1, 2
MM2 3 2
MM4 2 2
uj5u.com熱心網友回復:
Yiu 可以將第二級 ( col3)轉換為列。所以可能通過GroupBy.aggwithDataFrameGroupBy.idxmax和聚合GroupBy.max:
df1 = (df.groupby(["col1", "col3"])
.size()
.reset_index(level=0)
.groupby('col1')
.agg(col3 = (0,'idxmax'), count=(0, 'max')))
print (df1)
col3 count
col1
MM1 1 2
MM2 3 2
MM4 2 2
uj5u.com熱心網友回復:
你可以簡單地這樣做:
df.groupby(["col1"])["col3"].max()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370816.html
