我尝试了以下代码
x=dd.groupby(['name','sal'])['sal'].agg({'Frequency':'count'})
nombre=x.columns.tolist()[0]
x.rename(columns={nombre:'Freq'},inplace=True)
x['Pct']=round((x['Freq']/x.Freq.sum())*100,2)
x['Freq Acum'],x['Cumm Percent']=x.Freq.cumsum(),x.Pct.cumsum()
x.sort_values(['Freq'],ascending=[0],inplace=True)
pd.set_option('display.max_columns',500)
print(' Frequency on : '+nombre)
print('\n')
print(x)
print('\n')
我可以得到我期望的以下结果:
Frequency on : Frequency
Freq Pct Freq Acum Cumm Percent
name sal
Amit 100 2 50.0 2 50.0
gupta 200 1 25.0 3 75.0
hello 300 1 25.0 4 100.0
但是当我尝试将以下代码放入功能中时:
def cross_freq_2way(dataset,arg1,arg2):
x= dataset.groupby([arg1,arg2],axis=1).agg(({'Frequency':'count'}),axis=1)
nombre=x.columns.tolist()[0]
x.rename(columns={nombre:'Freq'},inplace=True)
x['Pct']=round((x['Freq']/x.Freq.sum())*100,2)
x['Freq Acum'],x['Cumm Percent']=x.Freq.cumsum(),x.Pct.cumsum()
x.sort_values(['Freq'],ascending=[0],inplace=True)
pd.set_option('display.max_columns',500)
print(' Frequency on : '+nombre)
print('\n')
print(x)
print('\n')
print(cross_freq_2way(dd,['name'],['sal']))
我收到ValueError:石斑鱼和轴的长度必须相同。请帮忙。
答案 0 :(得分:0)
尝试一下:
def cross_freq_2way(dataset,arg1,arg2):
x= dataset.groupby(arg1 + arg2)[arg2[0]].agg(({'Frequency':'count'}))
…
您使用列表参数调用cross_freq_2way
,因此您不应创建另一个列表来包装它们。