2016-07-11 12 views
0

Ich bin neu bei Python, so könnte dies ein kleines Problem für Ihr Fachwissen scheinen.überschreiben Werte in Datenrahmen in Python

Ich habe 6 Kategorien (0 bis 5), von denen jede 4 Unterkategorien hat: 3, 4, 5, 6.

für diese, ich habe eine Datenrahmen erstellt mit:

df=pd.DataFrame(index=list(range(5)),columns=list([3,4,5,6]) 

Nun, ich habe einige berechneten Werte aus meiner Schleife bekommen:

for i in range(5): 
    for j in list([3,4,5,6]): 
     somecalculation=a 

Nun, ich versuche zu ersetzen die Werte von df mit diesen Berechnungen wie für die zweite Iteration (dh for i=0,j=4), habe ich somecalculation=b, für die dritte s omecalculation=c und weiter d. Wenn Schleife erneut über i=2 iteriert, bekomme ich Berechnungen wie e, f, g, h und so weiter für weitere Iterationen. Ich versuche, diese Werte zu anhängen, sobald ich erhalten, sie df aber ich bin nicht die gewünschte Ausgabe als

3 4 5 6 
0 a b c d 
1 e f g h 
2 i j k l 
......... 
......... 
......... 

weil letztlich immer, ich will Durchschnitt der Spaltenwerte ergreifen, um ihre Indizes verwenden, aber das Ersetzen von Werten von Datenrahmen wird mühsam.

Antwort

1

Ihr Vorschlag iterativ Datenrahmen Reihen von Anhängen nicht optimal ist. es wird den Code verlangsamen. Stattdessen können Sie die Ausgabe an eine Liste anhängen und dann die Liste beliebig umformen und schließlich in pd.DataFrame konvertieren. Das wird viel schneller sein als das, was Sie vorschlagen. zum Beispiel:

import pandas as pd, numpy as np 
list1=[] #initialize the list 
list1.extend([i]) #where i is the output from your loop 
df = pd.DataFrame(np.reshape(list1,(5,4)),columns=['a','b','c','d']) # finally you can reshape the list as desired (eg: 5 row X 4 cols) and write it to dataframe in a single step 

wenn dies bitte vergessen Sie es hilft nicht zu akzeptieren :)

0

Nicht sicher, ob ich Ihre Frage richtig verstanden habe, aber es gibt mehrere Möglichkeiten, einen Wert in eine gewünschte Datenzelle einzufügen.

Beispiel Linie

df.xs(1)['e'] = x 

Einsätze Wert x auf eine Zelle, die einen Index-Wert von 1 und ist in der Spalte 'e' hat.

Wenn Sie den Mittelwert der bestimmten Spalte berechnen wan't und legen Sie das zu spesific Zelle, könnten Sie tun:

import numpy as np 

df.xs(desired_index_value)['desired_column_name'] = np.mean(df.xs('col_x',axis=1)) 
+0

Ich möchte nicht jedes Mal erwähnen, dass ich diesen oder jenen Wert des dataframe.I wollen ersetzen müssen meine Berechnungen, um die Werte von df automatisch zu ersetzen, sobald sie in einer Iteration berechnet wurden –

Verwandte Themen