使用数字循环简化线路



Set-Up

我将 pandas 数据帧中的特定列分配给radf的新数据帧,fdf如下行,

fdf['avg rent pcm,<br> 1R'] = radf['avg rent pcm'][1]   
fdf['median rent pcm,<br> 1R'] = radf['median rent pcm'][1]  
fdf['# for rent,<br> 1R'] = radf['# for rent'][1]   
fdf['avg rent pcm,<br> 2R'] = radf['avg rent pcm'][2]  
fdf['median rent pcm,<br> 2R'] = radf['median rent pcm'][2]   
fdf['# for rent,<br> 2R'] = radf['# for rent'][2]  

问题

我想用循环简化上述行。例如,在Stata中,这是非常简单的。但是,对于Python,我从未设法使其工作。

我见过人们做这样的事情,

for i in range(1,2):
     fdf['avg rent pcm,<br> {i}R'] = radf['avg rent pcm'][{i}]   
     fdf['median rent pcm,<br> {i}R'] = radf['median rent pcm'][{i}]  
     fdf['# for rent,<br> {i}R'] = radf['# for rent'][{i}]   

但这行不通。

如何做到这一点?

range不包括

停止索引,您应该在LHS上格式化字符串:

for i in range(1, 3):
    fdf['avg rent pcm,<br> {i}R'.format(i=i)] = radf['avg rent pcm'][i]  

在 RHS 上,不应从索引创建集合,而应直接使用它。

如果在 Python 3.6 上,您可以使用 f 字符串代替更详细的str.format

for i in range(1, 3):
    fdf[f'avg rent pcm,<br> {i}R'] = radf['avg rent pcm'][i]
    ...

最新更新