我有一个简单的DF,我用groupby和sum来清理。现在我想迭代每一行,如果orderqty有一个值>;0,询问用户“我们分配了多少项{item name}?”并存储此响应
存储的响应需要保留itmdesc(项的名称)。目标是稍后迭代未分组的数据帧,并通过将现有的数字除以存储的响应数字,为每一行创建一个新列
示例DF和代码: 显然,这段代码不起作用,但我对将输入与ItErrors相结合感到非常困惑。我遇到了无数错误,当前的错误是“str”对象不可调用。
先谢谢你
for i, row in sums.iterrows():
if sums.orderqty > 0:
num = int(input("How many (row.itmdesc[i]) were we allocated?"))
orderqty
itmdesc
ALCATEL 1X EVOLVE 72
ALCATEL 3V 50
ALCATEL 7 0
ALCATEL GO FLIP 0
ALCATEL GO FLIP 3 28
ALCATEL JOY TAB 53
从背面我可以看出你的第三行需要缩进。另外,如果要同时遍历两个对象,则需要正常使用zip()函数。我通常不使用.iterrows来遍历表,我喜欢做以下工作:
这将引导您遍历所有列和每个列中的所有行,您还可以遍历索引或范围(len(df)),这将为您提供一个可以与df.iloc[rownum,colnum]一起使用的num
此外,如果您了解详细信息,列出生成器可能会有所帮助
它们遵循下面的通用语法,可以嵌套
编辑:另外,我认为将字符串转换为int有一个很大的问题。您无法将整个字符串转换为int,这似乎是您正在做的事情
解决办法其实很简单。迭代行,将响应存储为列表,然后将列表作为列添加到数据帧中。类型不同,因此我需要更改类型,然后根据需要在新列中执行数学运算。当我重构所有东西时,也许是一种更干净的方法,但现在就开始运行吧!谢谢大家
相关问题 更多 >
编程相关推荐