我目前正在编写一个脚本,以便在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
,则信息会正确显示。我可以做到这一点作为最后的手段,但我更喜欢让这个功能起作用。
感谢任何建议。
答案 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