在pandas中使用函数运行多个交叉表



你好,我想做一些列联表。我希望它在一个函数,所以我可以使用它的各种列/数据框架/组合等。

当前我有一个像这样的数据框架

df = pd.DataFrame(data={'group' : ['A','A','B','B','C','D'],
'class': ['g1','g2','g2','g3','g1','g2'],
'total' : ['0-10','20-30','0-10','30-40','50-60','20-30'],
'sub' : ['1-4', '5-9','10-14', '15-19','1-4','15-19'],
'n': [3,14,12,11,21,9]})

和如下所示的函数

def cts(tabs, df):
out=[]
for col in df.loc[:,df.columns != tabs]:
a = pd.crosstab([df[tabs]], df[col])
out.append(a)
return(out)
cts('group', df)

用于一列相对于其他列的交叉表。但是我想在分组中添加两个(或更多!)级别,例如

pd.crosstab([df['group'], df['class']], df['total'])

其中total是根据组和类交叉表。

我认为函数中的'tabs' var应该是列名列表,但当我尝试使其成为列表时,我得到错误重新无效语法。我希望这是有意义的…谢谢你!

尝试:

def cts(tabs, df):
out=[]
cols = [col for col in df.columns if col not in tabs]
for col in df.loc[:,cols]:
a = pd.crosstab([df[tab] for tab in tabs], df[col])
out.append(a)
return(out)

相关内容

  • 没有找到相关文章

最新更新