Skip to main content
 首页 » 编程设计

python之使用 iteritems() 时在字典中操作 pandas dataframe

2025年05月04日8birdshome

我创建了一个数据框字典来存储我的数据。我需要对我尝试使用 iteritems() 遍历字典的每个数据帧做一些事情。但不知何故,我似乎无法对数据帧做任何事情。代码编译并没有抛出任何错误,它似乎什么也没做。

这里是我的代码的简化:

这只是一个数据框的示例字典

dic={} 
df1=pd.DataFrame(np.random.randn(10,5),columns=['a','b','c','d','e']) 
df2=pd.DataFrame(np.random.randn(10,5),columns=['a','b','c','d','e']) 
df3=pd.DataFrame(np.random.randn(10,5),columns=['a','b','c','d','e']) 
df4=pd.DataFrame(np.random.randn(10,5),columns=['a','b','c','d','e']) 
df5=pd.DataFrame(np.random.randn(10,5),columns=['a','b','c','d','e']) 
 
dic[1]=df1 
dic[2]=df2 
dic[3]=df3 
dic[4]=df4 
dic[5]=df5 

这是我想对每个数据帧执行的一组基本操作。

for key, item in dic.iteritems(): 
    item=item.reset_index()     
    item['Rank']=(item.index)+1 

因此,在迭代之后,我希望每个数据框都有一个带有旧索引的额外列,以及另一个带有“Rank”的额外列,如下所示:

Expected

相反,数据框似乎不受操作影响,看起来和以前一样:

Reality

我也曾尝试在迭代中使用临时数据框,然后尝试将其写入“项目”,结果相同。我只是想知道我想做的事情是否可行,或者我是否必须绕过它并使用不同的方法来实现我的目标。

请您参考如下方法:

我认为你只需要返回 DataFrame,如果想要 python 2 和 3 代码使用 items():

for key, item in dic.items(): 
    item=item.reset_index()     
    item['Rank']=(item.index)+1 
    dic[key] = item 
 
print (dic[1]) 
   index         a         b         c         d         e  Rank 
0      0 -1.085631  0.997345  0.282978 -1.506295 -0.578600     1 
1      1  1.651437 -2.426679 -0.428913  1.265936 -0.866740     2 
2      2 -0.678886 -0.094709  1.491390 -0.638902 -0.443982     3 
3      3 -0.434351  2.205930  2.186786  1.004054  0.386186     4 
4      4  0.737369  1.490732 -0.935834  1.175829 -1.253881     5 
5      5 -0.637752  0.907105 -1.428681 -0.140069 -0.861755     6 
6      6 -0.255619 -2.798589 -1.771533 -0.699877  0.927462     7 
7      7 -0.173636  0.002846  0.688223 -0.879536  0.283627     8 
8      8 -0.805367 -1.727669 -0.390900  0.573806  0.338589     9 
9      9 -0.011830  2.392365  0.412912  0.978736  2.238143    10