使用变量

时间:2016-02-11 23:28:32

标签: python pandas

我目前正在编写一个脚本,以便在CSV中进行大量的复制和粘贴。 (我们正在为Magento做产品导入文件)

def select_cell(m):
    return 'row.'+ m

def mageimport(f,x):    #let x = table_size  let y = color or wood_stain
    sku_copy = [row.sku for index, row in f.iterrows() if type(select_cell(x)) != float]
    option1 = [x for index, row in f.iterrows() if type(select_cell(x)) != float]
    option2 = [select_cell(x) for index, row in f.iterrows() if type(select_cell(x)) != float]

    df = {}
    df = {'_super_products_sku':sku_copy, '_super_attribute_code':option1, '_super_attribute_option':option2}
    return df

如果我完全按照上面的方式使用代码,那么我为x输入的任何值都会返回一个字符串而不是我的数据帧中的单元格。我知道问题来自select_cell()函数,但我不知道如何绕过它。

如果我将select_cell()替换为row.table_size,则信息会正确显示。我可以做到这一点作为最后的手段,但我更喜欢让这个功能起作用。

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您正在select_cell中返回一个字符串。应始终将str作为type()返回。

尝试使用(我不知道哪个行,但我认为它是模块/类或全局可用对象)。我将在这里创建一个简单的。

class row:
    a = 10
    b = 20

def select_cell(m):
    if hasattr(row, m):
        return getattr(row, m)
    return None

assert select_cell('a') == 10
assert select_cell('b') == 20
assert select_cell('c') is None