2017-05-09 3 views
0

Set-UpVereinfachen Linien mit Schleife über Zahlen

I zuweisen bestimmte Spalten von einem Pandas Datenrahmen radf zu einem neuen Datenrahmen fdf durch folgende Linien,

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] 

Problem

Ich möchte die obigen Zeilen mit einer Schleife vereinfachen. In z.B. Stata das ist ziemlich einfach. Für Python habe ich es jedoch nie geschafft, es zum Laufen zu bringen.

Ich habe Leute so etwas tun gesehen,

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

aber das funktioniert nicht.

Wie funktioniert das?

+0

warum '[{i}]' statt '[i]' und Bereich ausgeschaltet ist – Ludisposed

Antwort

1

range enthält nicht den Stopp-Index und Sie sollten die Zeichenfolge auf der LHS wurden Formatierung:

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

Auf der RHS, Sie einen Satz aus dem Index nicht schaffen sollten, sondern es vielmehr direkt verwenden.

Wenn auf Python 3.6, Sie f-Strings an Ort und Stelle der ausführlicheren str.format verwenden können:

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

Genial. Vielen Dank! – LucSpan