我不得不把我正在研究的桌子切成碎片,因为它对于Pandas来说是沉重的,而我正在使用一个循环来使用一个字典对每件作品进行处理。它一直工作正常,直到我必须在每个部分上应用合并,使用左边的相同DataFrame:
for piece, df in d.iteritems():
df = pd.merge(df,table_left, on='column', how='inner')
它不会引发任何错误,但我的左表的列未添加。 奇怪的是,当我在我的一个表上使用相同的代码时,在循环之外,它工作得很好...... 知道我错过了什么吗?
答案 0 :(得分:0)
目前,您只更改for
循环中的迭代值,因为df
是循环中的本地对象。通过重新分配该迭代值,合并仅在当前迭代期间保持在该状态。您不会重新分配值的来源,即字典d
。
考虑通过明确引用字典来更新for
循环中的字典元素:
for piece, df in d.iteritems():
d[piece] = pd.merge(df, table_left, on='column', how='inner')
或者,尝试字典理解:
new_dict = {piece: pd.merge(df, table_left, on='column', how='inner') for piece, df in d.iteritems()}