2017-05-09 56 views
0

结构容纳简化线条与

我指派特定的列从熊猫数据帧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}] 

但这不起作用。

如何使这项工作?

+0

为什么'[{I}]'而不是'[I]'和范围是关闭 – Ludisposed

回答

1

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,你可以就地更详细str.format的使用f-字符串:

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

真棒。谢谢! – LucSpan