通过数字循环简化线条
Simplify lines with loop over numbers
设置
我通过以下行将 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]
...
设置
我通过以下行将 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]
...