使用循环编号简化线

2024-10-01 11:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

设置

我通过以下行将数据帧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}]   

但这是行不通的

如何做到这一点


Tags: 数据inbrforrangeavgmedianpcm
1条回答
网友
1楼 · 发布于 2024-10-01 11:33:17

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

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

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

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

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

相关问题 更多 >