首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的python交叉表函数

循环中的python交叉表函数
EN

Stack Overflow用户
提问于 2015-04-28 21:31:38
回答 1查看 1.4K关注 0票数 1

我在python中工作了一段时间,但遇到了简单的问题,我必须为具有相同ID变量(Masteruserid)的不同变量运行交叉表函数。

代码语言:javascript
复制
pd.crosstab(data['MasterUserId'],visittime_cat)
pd.crosstab(data['MasterUserId'],week_cat)

现在我想做同样的事情7-8次。我不是递归地调用交叉表函数,而是将其放入循环中,并为每次迭代生成交叉表数据集。我试过了,但没有成功。

代码语言:javascript
复制
def cross_tab(id_col,field):
    col_names=['visittime_cat','week_cat','var3','var4']
    for i in col_names:
        'crosstab_{ }'.format(i)=pd.crosstab(id_col,i)

我希望生成诸如crosstab_visittime_cat、crosstab_week_cat或as crosstab_1、crosstab_2等数据集。

EN

回答 1

Stack Overflow用户

发布于 2015-04-28 21:46:04

我可以建议将数据集存储在字典中吗?

代码语言:javascript
复制
def cross_tab(data_frame, id_col):
    col_names=['visittime_cat','week_cat','var3','var4']
    datasets = {}
    for i in col_names:
        datasets['crosstab_{}'.format(i)] = pd.crosstab(data_frame[id_col], data_frame[i])
    return datasets

使用虚构数据集进行测试

代码语言:javascript
复制
import numpy as np
import pandas as pd

data = pd.DataFrame({'MasterUserId': ['one', 'one', 'two', 'three'] * 6,
             'visittime_cat': ['A', 'B', 'C'] * 8,
             'week_cat': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 4,
             'var3': np.random.randn(24),
             'var4': np.random.randn(24)})

storage = cross_tab(data, "MasterUserId")

storage.keys()
['crosstab_week_cat', 'crosstab_var4', 'crosstab_visittime_cat', 'crosstab_var3']

storage['crosstab_week_cat']
week_cat      bar  foo
MasterUserId          
one             6    6
three           4    2
two             2    4

[3 rows x 2 columns]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29921007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档