Python 你能在通过列表理解创建词典时引用它吗?
我正在尝试使用列表理解从pandas数据框填充字典。我的问题是,我需要向现有密钥添加数据,而不是覆盖它们Python 你能在通过列表理解创建词典时引用它吗?,python,pandas,dictionary,Python,Pandas,Dictionary,我正在尝试使用列表理解从pandas数据框填充字典。我的问题是,我需要向现有密钥添加数据,而不是覆盖它们 def Load_Dataframes(cursor): negativeitems = Load_NegativeOnhand(cursor) materiallog = Load_Materiallog(cursor) negativetrans = Join_Dataframes(negativeitems, materiallog) datadict
def Load_Dataframes(cursor):
negativeitems = Load_NegativeOnhand(cursor)
materiallog = Load_Materiallog(cursor)
negativetrans = Join_Dataframes(negativeitems, materiallog)
datadict = {}
datadict = {row[0]:Calculate_Transaction_History(row, datadict) for row in negativetrans[['item-no', 'tran-date', 'tran-time',
'on-hand', 'quantity', 'whse',
'order-no']].values}
def Calculate_Transaction_History(row, datadict):
if not row[0] in datadict.keys():
data = Shortage_Data.ShortageData()
data.addrow(row)
else:
data = datadict[row[0]].addtransactions(row)
return data
这会填充字典,但参数datadict是空字典,因此if语句是无用的。使用列表理解来实现这一点是可行的,还是应该只使用itertuples()
开始数据帧:
item-no on-hand quantity
item1 -10 2
item1 -10 4
item1 -10 10
item2 -5 1
item2 -5 1
item3 -3 2
最终目标使用key:item no value:class对象创建字典
keys data.on-hand data.quantity
item1 -10 16
item2 -5 2
item3 -3 2
分组在这里不起作用,它在本例中起作用,但在我完全试图完成的工作中不起作用。您能添加一个小样本数据帧和与之对应的所需输出吗?并删除所有与当前问题无关的代码?如果你这样做了,人们会更容易给你一个有用的答案。直到理解完成后,作业才会进行。因此,您可以在理解中引用它,但它将保留它在理解运行之前存在的任何值/状态(在您的例子中是空的)。对于您的上一个语句,我不知道
itertuples()
是/是什么,但是如果您使用常规for循环而不是理解,您的字典将通过循环以增量方式构建(上一次迭代的数据将出现在下一次迭代中)。@b_c它只是以命名元组的形式在数据帧行上进行迭代。我试图避免它,因为我的实际数据框架是一个重要的事务分类账,而且是巨大的,我试图使用列表理解来加速它,但我想不出如何绕过这个问题。使用分组是行不通的,我不能只对某些列求和,还有其他条件对这个问题并不重要。你能添加一个小样本数据框和与之对应的所需输出吗?并删除所有与当前问题无关的代码?如果你这样做了,人们会更容易给你一个有用的答案。直到理解完成后,作业才会进行。因此,您可以在理解中引用它,但它将保留它在理解运行之前存在的任何值/状态(在您的例子中是空的)。对于您的上一个语句,我不知道itertuples()
是/是什么,但是如果您使用常规for循环而不是理解,您的字典将通过循环以增量方式构建(上一次迭代的数据将出现在下一次迭代中)。@b_c它只是以命名元组的形式在数据帧行上进行迭代。我试图避免它,因为我的实际数据框架是一个重要的事务分类账,而且是巨大的,我试图使用列表理解来加速它,但我想不出如何绕过这个问题。使用分组是行不通的,我不能只对某些列求和,还有其他标准对这个问题并不重要。