我有一個資料框,它作為分組依據和其他幾列的列。播放資料框:
d = {'group_col': ["a","b","b","a"],'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
df = pd.DataFrame(data=d)
在此資料幀上使用 groupby 后跟默認函式時,groupby 列被設定為索引并且不包含在結果中:
# using sum as an example
df.groupby('group_col').sum()

但是當我定義一個自定義函式并使用apply時,我得到一個不需要的附加列:
# Sum function for use by apply
def sum_2(x):
return x.sum()
df.groupby('group_col').apply(sum_2)

我如何避免有這個額外的列?
我要使用的實際功能如下:
def tss(x):
return ((x - x.mean(numeric_only = True))**2).sum()
df.groupby('group_col').apply(tss)
uj5u.com熱心網友回復:
您可以嘗試使用.agg而不是.apply:
def tss(x):
return ((x - x.mean()) ** 2).sum()
print(df.groupby("group_col").agg(tss))
印刷:
col1 col2
group_col
a 4.5 4.5
b 0.5 0.5
uj5u.com熱心網友回復:
IIUC,使用 as_index= False 來避免 addl 列
def sum_2(x):
return x.sum()
df.groupby('group_col', as_index=False).apply(sum_2)
group_col col1 col2
0 aa 5 9
1 bb 5 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505733.html
