Pandas 程序在循环中交叉制表符

Pandas 程序在循环中交叉制表符,pandas,jupyter,crosstab,Pandas,Jupyter,Crosstab,我试图在jupyter笔记本的背景下,在pandas中发布一系列交叉标签,如下所示: def crosstab_all(dataset,attributelist): for k in attributelist: print('k',k) pd.crosstab(dataset[k],dataset["successfulmatch"], normalize=True, margins=True, margins_name="Total") attri

我试图在jupyter笔记本的背景下,在pandas中发布一系列交叉标签,如下所示:

def crosstab_all(dataset,attributelist):
    for k in attributelist:
        print('k',k)
        pd.crosstab(dataset[k],dataset["successfulmatch"], normalize=True, margins=True, margins_name="Total")

attributelist=["has_closing_date","has_address",'has_price','has_listing_date','has_contract_dates','has_tsp','has_susan','has_sell_side','has_buy_side','has_both_sides','has_beth','has_agent','has_admin','has_closing_tsp','has_key_stages']

crosstab_all(dataset,attributelist)
def crosstab_all(dataset,attributelist):
    for k in attributelist:
        xdf=pd.crosstab(dataset[k],dataset["successfulmatch"], normalize=True, margins=True, margins_name="Total")
        print('xdf',xdf)
        print('') # for spacing

attributelist=["has_closing_date","has_address",'has_price','has_listing_date','has_contract_dates','has_tsp','has_susan','has_sell_side','has_buy_side','has_both_sides','has_beth','has_agent','has_admin','has_closing_tsp','has_key_stages']

crosstab_all(dataset,attributelist) # dataset is a dataframe
我发现如果我这样做:

k="has_closing_date"
pd.crosstab(dataset[k],dataset["successfulmatch"], normalize=True, margins=True, margins_name="Total")
。。。它会起作用的。问题似乎是连续运行交叉表函数调用。例如,立即连续使用两个交叉表命令将失败。我怀疑问题不在于crosstab命令本身,而在于生成多个jupyter窗口所需的额外步骤


无论如何,我很感激任何关于如何使这项工作有效的建议。

好的,我找到了一些有效的方法。此解决方案不会生成单独的窗口,并且会丢失一些格式,但我了解到crosstab会返回一个数据帧,因此您可以直接打印它,如下所示:

def crosstab_all(dataset,attributelist):
    for k in attributelist:
        print('k',k)
        pd.crosstab(dataset[k],dataset["successfulmatch"], normalize=True, margins=True, margins_name="Total")

attributelist=["has_closing_date","has_address",'has_price','has_listing_date','has_contract_dates','has_tsp','has_susan','has_sell_side','has_buy_side','has_both_sides','has_beth','has_agent','has_admin','has_closing_tsp','has_key_stages']

crosstab_all(dataset,attributelist)
def crosstab_all(dataset,attributelist):
    for k in attributelist:
        xdf=pd.crosstab(dataset[k],dataset["successfulmatch"], normalize=True, margins=True, margins_name="Total")
        print('xdf',xdf)
        print('') # for spacing

attributelist=["has_closing_date","has_address",'has_price','has_listing_date','has_contract_dates','has_tsp','has_susan','has_sell_side','has_buy_side','has_both_sides','has_beth','has_agent','has_admin','has_closing_tsp','has_key_stages']

crosstab_all(dataset,attributelist) # dataset is a dataframe
这将在每次循环中返回一个未格式化的xtab