Pandas:合并循环不起作用,但分别在每个表上工作?

时间:2016-09-03 02:07:47

标签: loops pandas merge

我不得不把我正在研究的桌子切成碎片,因为它对于Pandas来说是沉重的,而我正在使用一个循环来使用一个字典对每件作品进行处理。它一直工作正常,直到我必须在每个部分上应用合并,使用左边的相同DataFrame:

for piece, df in d.iteritems():
   df = pd.merge(df,table_left, on='column', how='inner')

它不会引发任何错误,但我的左表的列未添加。 奇怪的是,当我在我的一个表上使用相同的代码时,在循环之外,它工作得很好...... 知道我错过了什么吗?

1 个答案:

答案 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()}