我與一些數據工作,想拉最大的某列,由不同的列進行分組。但是,我想根據另一列排除最大計算中的某些行。Python的大熊貓組基於列的和獲得最大的,但不包括基於另一列
例子:
df = pd.DataFrame({'Col1':['A','A','A','B','B','B','B'],
'Col2':['Build','Plan','Other','Test','Build','Other','Buy'],
'Col3':[2,5,17,5,13,12,12]})
我想COL3的最大值,通過Col1中進行分組,同時排除有「其他」 col2的任何行。因此,對於col3的「A」的最大應爲5,而不是17
我能得到利用Col1中分組COL3的最大值:df['new'] = df.groupby(['Col1'])['Col3'].transform(max)
然而,這會給我的17值A.
從其他線程環顧四周,我嘗試使用:
x = df1.groupby(['Col1'])
x2 = x.apply(lambda g: g[g['Col2'] != 'Other'])
,這似乎讓我接近的(它具有Col1中分組的數據,並移除行基於col2的)。然而,我似乎無法找到一種方法來獲得基於Col1的Col3的最大值。
至多我已經能夠使用:x2['Col3'].max()
獲取Col3中所有具有「其他」的行之後的最大值。但是,我無法獲得由Col1分組的Col3的最大值。
我在想,如果有使用內置熊貓功能來做到這一點相對簡單,而不是創建一個全新的定製功能的方式是什麼?
通過Col1中第一過濾您的數據幀,然後組混合起來。 –
df.query( 'col2的!= 「其他」')。GROUPBY( 'Col1中') 'COL3']。MAX() –
謝謝你,工作:) – pyman