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]
...