函数将迭代目标作为局部参数字符串而不是for循环中的迭代值读取

时间:2019-04-17 17:24:08

标签: python-3.x pandas for-loop crosstab

尝试使用熊猫交叉标签功能运行此简单的for循环。迭代目标是交叉表函数中的参数。应该通读一列列表,并为每个列组合生成一个交叉表。但相反,它会将我的“ i”可迭代方法解释为该列的文字标题,而不是该迭代中应包含的任何变量。

我得到一个错误:'DataFrame'对象没有属性'i',因为它正在读取'i'作为属性的文字名称,而不是应该从循环中存储在i中的值。

import pandas



DF = pandas.read_excel('example.xlsx')

Categories = list(DF.columns.values)

for i in Categories:

    pandas.crosstab(DF.Q, DF.i, normalize = 'index', margins=True)

1 个答案:

答案 0 :(得分:2)

IIUC,您想遍历每一列并针对列Q创建交叉表,但是您当前的循环不会产生任何结果。

使用以下内容将结果分配给python dict,您可以使用列名作为键来访问它:

DF = pandas.read_excel('example.xlsx')

Categories = list(DF.columns.values)

cross_tabs = {}

for i in Categories:
    cross_tabs[i] = pandas.crosstab(DF.Q, DF[i], normalize = 'index', margins=True)